42
53

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Python】機械学習における学習結果(モデル)の保存

Last updated at Posted at 2020-11-16

はじめに

前回の記事で、機械学習の簡単なプログラムに触れてみました。
前回の記事のようなとても小規模なデータは実際には使われません。
機械学習は基本的にはデータが多い方が有利なので、通常はとても大規模なデータになってしまいます。
データが多いと、当然学習にも多くの時間を要します。
知らないとびっくりするかもしれませんが、1週間PCを放置して学習させるなどが当たり前にあります。
このような長時間の学習を、プログラム実行毎にしていては実用性も何もありません。
そこで、学習結果をモデルとして保存し、実際のプログラムではそのモデルを使用する形で実行することで、時間を短縮できます。
今回は、「保存プログラム」と「モデルを用いた予測プログラム」を作成していこうと思います。

なにをやっているかわからないと言う人は、前回の記事を参照してください。

環境

python 3.8.5
scikit-learn 0.231

ソースコード(モデルの保存)

コードには前回の記事で使用したものを一部流用しています。

save_model.py
import numpy as np
from sklearn import svm
import pickle

#csvファイルの読み込み
npArray = np.loadtxt("data.csv", delimiter = ",", dtype = "float")

# 説明変数の格納
x = npArray[:, 0:4]

#目的変数の格納
y = npArray[:, 4:5].ravel()

#学習手法にSVMを選択
clf = svm.SVC()

#学習
clf.fit(x,y)

#学習モデルの保存
with open('model.pickle', mode='wb') as f:
    pickle.dump(clf,f,protocol=2)

ソースコード(保存したモデルの使用)

open_model.py
import pickle

# モデルのオープン
with open('model.pickle', mode='rb') as f:
    clf = pickle.load(f)

# 評価データ
weather = [[9,0,7.9,6.5]]

# モデルを用いた予測
ans = clf.predict(weather)

if ans == 0:
    print("晴れです")
if ans == 1:
    print("曇りです")
if ans == 2:
    print("雨です")

実行結果

$ python3 open_model.py
晴れです

おわりに

お疲れ様でした。
このように学習したモデルを保存することで、実行毎に学習させることなく、データの評価や、予測ができるようになります。

42
53
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
53

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?