Python joblibで保存した機械学習モデルを読み込んで利用する

'21/06/19更新:利便性を考えて、JupyterLabのようにインタラクティブに使用できる雛形コードにしました。勿論、テキストファイルに保存してコマンドプロンプトで実行することも可能です。

 機械学習モデルを作成してバイナリファイル(.joblib)へ保存する例は次のリンクを参照下さい。Python ランダムフォレスト分類でタイタニックの生存予測 - PythonとVBAで世の中を便利にする

 本記事では、上記リンク先で作成した分類学習器を読み込んで未知データを読み込んで予測してcsvファイルに保存するまでの一連の雛形コードを載せました。
分類ではなく、回帰分析の場合でも方法と手順は同じです。

■本プログラム

#!/usr/bin/env python
# coding: utf-8

# In[ ]:


import pandas as pd
from sklearn.preprocessing import OneHotEncoder
from sklearn.ensemble import RandomForestClassifier
import joblib
import datetime
now = datetime.datetime.now()
now = now.strftime("%y%m%d")

# 予測したいデータを読み込む
df_test = pd.read_csv('test.csv')
df_test


# In[ ]:


# 作成した学習器に対応した分析に必要な列名だけ残す
drop_list = ['PassengerId', 'Name', 'Ticket', 'Cabin']
df_test2 = df_test.drop(drop_list, axis=1)
df_test2


# In[ ]:


# 欠損値を確認
df_test2.isnull().sum()


# In[ ]:


# 型の確認
df_test2.dtypes


# In[ ]:


# 欠損データを埋める
#df_test3 = df_test2.fillna(df_test2.mean()) # 平均値
df_test3 = df_test2.fillna(df_test2.median()) # 中央値
#df_test3 = df_test2.fillna(df_test2.mode()) # 最頻値
df_test3


# In[ ]:


# 欠損値を確認
df_test3.isnull().sum()


# In[ ]:


# 作成した分類器に合わせたデータに変換(One-hotエンコーディング)
test_data = pd.get_dummies(df_test3)
test_data


# In[ ]:


# 学習器を読み込む
model = now + '_07_titanic_RandomForestClassifier.joblib'
clf = joblib.load(model)
clf


# In[ ]:


# 予測する
predict = clf.predict(test_data)
predict


# In[ ]:


# 予測結果を元のデータの列に追記する
results = pd.Series(predict, name = "Survived_pred")
DF = pd.concat([df_test, results], axis = 1)
DF


# In[ ]:


# csvファイルに保存する
DF.to_csv(now + '_08_titanic_classyfiy_predict.csv')


# In[ ]:

(参考)シリアライズ方法のその他の例
TensorFlowに統合されたKerasを使用した例は下記で拡張子は「.h5」です。

Python テンソルフローによるニューラルネットワーク回帰分析 - HK29’s blog

Python テンソルフローによる回帰モデルのロードと予測 - HK29’s blog

以上

<広告>