風待ち

プログラミングの勉強や日々の出来事のログなど

scikit-learnのテキトーに作ったモデルを読み込んで使ってみる。

前に作ったモデルを読み込んで使ってみる。

まずは予測したい列を除いたCSVファイル(「target.csv」って名前にする)を用意する。 前に作った時には「target」カラムがあったけど、今回はそれを予測するためのデータなのでその行はない。

YYYY,MM,DD,DY
2018,1,9,火
2018,1,10,水
2018,1,11,木
2018,1,12,金
2018,1,13,土

作ったモデルを読み込んで、予測したあと、もう一度、CSVを読んで結果を追記して「result.csv」に出力する。

import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.externals import joblib

target_csv_file = "target.csv"

data = pd.read_csv(target_csv_file, encoding="SHIFT-JIS", sep=",")

le = LabelEncoder()
for col in data.loc[:, data.dtypes == 'object']:
    data[col] = le.fit_transform(data[col])

for col in data.loc[:, data.dtypes == 'int32']:
    data[col] = data[col].astype(float)

X = data.loc[:, data.columns].as_matrix()

scaler = joblib.load("foo.scaler")
X = scaler.transform(X)

model = joblib.load("foo.learn")
y_predict = model.predict(X)

data = pd.read_csv(target_csv_file, encoding="SHIFT-JIS", sep=",")
tmp = []
for i in range(len(y_predict)):
    tmp.append(y_predict[i])

data["result"] = tmp

data.to_csv("result.csv", encoding="SHIFT-JIS", sep=",")

CSVで入出力してしまえば、どの程度のデータ量が必要かはおいといてDBから出して加工して入れるっていうこれまでよく作ってきたバッチ処理と同じだから実際のシステムに組み込む場合のイメージがつきやすいな。