RのWeb制作

Webサービス制作のための技術情報を。データ分析(Python、機械学習コンペ他)や自作野球ゲームMeisyoのこと中心。

Web制作 Python

[python]MNISTの学習モデルを保存し、テストする

投稿日:

機械学習のHello World的なMNISTにて、学習モデルを保存し、実行する際のメモ。

用意するもの

PC
コマンドプロンプト
インストール(python、sklearn、numpy)

学習時のコード

from sklearn import datasets
from sklearn import metrics
from sklearn import svm
from sklearn.model_selection import train_test_split
import numpy as np
from sklearn.externals import joblib

# データセットロード
dataset = datasets.load_digits()
#全データの最大値、全データ数確認
#print(np.amax(dataset.data)) # 最大値16
#print(dataset.data.shape[0]) # 全データ数

# 設定用
x = dataset.data / 16 # 最大値を1にする
y = dataset.target

# 訓練データ/テストデータの分割
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=1)

# モデル作成
model = svm.LinearSVC() # SVC

# 学習
model.fit(x_train, y_train)

# 推定
y_pred = model.predict(x_test)

# 評価
score = metrics.accuracy_score(y_test, y_pred)
print("SVC Score : {0:.4f}" . format(score))

# 間違い探し
co_mat = metrics.confusion_matrix(y_test, y_pred)
print(co_mat)

# 学習済みモデルの作成
joblib.dump(model, "test.pkl", compress=True)

呼び出し時のコード

from sklearn.externals import joblib

def predict(parameters):
    model = joblib.load('./test.pkl')
    params = parameters.reshape(1,-1)
    pred = model.predict(params)
    return pred

pred = predict(x) # xは入力値、未設定のためエラー出ます(28x28)
print(pred) # 結果出力

他のモデルを使う場合

「学習時のコード」の3行目と22行目を変更してください。

from sklearn import svm
model = svm.LinearSVC() # SVC

これをSVC以外の・・・分類に突っ込んであげましょう。
ロジスティック などですね。
k-meansは教師なしなので使い方が違います。

回帰(数値分類)ではできないので注意してください。

まとめ

意外と簡単に学習→モデル保存→出力できました。
慣れてない人は、コードに慣れてくるまでは写経ですね。

・・・とはいえ私も、「学習時のコード」のdatasetの最大値を出すだけで15分かかりました…。

-Web制作, Python

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

[Meisyo]大型アップデート予定のお知らせ

名将と呼ばれた者達よりお知らせです。 下記アップデートを予定しています。 1・サーバーの移転(高速化) 今まで練習試合等で非常に時間がかかっていた問題が解消されます。 2・チーム名等の仕様変更 チーム …

独学はまず本より始めよ

Web制作やCakePHP(特にクラス関係)を始め新しいモノを独学している時に気づきました。 まず本より始めよ、と。 なぜでしょうか? 「Webだけで十分じゃーん」という方も居ると思います。 Webは …

[Python:Predict Gollira]2枚の画像でどちらがゴリラっぽいかを人間が予想する。

「あーこの人ゴリラっぽい。」と思うことはありませんか? ゴリラっぽさってどこから来るんだろうかと悩んでいました。 前回、[Python] ディープラーニングのモデル「VGG16」を使って画像認識をし、 …

[Meisyo]練習難易度の不均衡是正への分析的アプローチ2

[Meisyo]練習難易度の不均衡是正への分析的アプローチから早3か月。 「練習ごとに難易度が違いすぎるんですけど!!」という不満は少しは解消されたかなー・・・ 効果測定してないのにわかるの?エスパー …

no image

cakePHP2.*で簡単にデータベース(database.php)設定を切り替える方法

cakePHP2.0で実験しました。 内容はhttp://blog.imho.jp/2014/05/cakephp-2xdatabasephp.htmlを改良しました。ありがとうございます。といっても …