あるケミストの独り言(winchemwinの日記)

ケミスト(化学者)の視点で、面白そうな情報(シミュレーション関係など)を発信

機械学習による(中古)不動産価格の予測 その5

 

 前回の記事で、中古不動産価格の予測モデルとして、lightGBMの利用とそのハイパーパラメーター最適化の事例について紹介しました。モデルとして比較的良い評価が得られてきていましたので、得られたモデルを用いて価格予測のコードを作成することにしました。今回はそのための作成したモデルの保存について紹介したいと思います。 

コード1 ライブラリーの読み込み

 まずはライブラリーの読み込みですが、モデルの保存用にjoblibとpickle のライブラリーを読み込んでいます。モデルの保存ですが下記の記事を参考にさせていただきました。

pickle と joblib で 機械学習モデルを保存&読み込む(Python) – セールスアナリティクス

 

 モデルの保存はjoblibとpickleのどちらでも可能ですが、joblibの方がファイルサイズが小さい、pickleの方が保存、読み込みスピードが早いという特徴があるようです。今回は両方の方法で保存するコードを作成しています。

 

コード2 不動産情報の読み込みと前処理その1

コード3 前処理その2

まずはデータの読み込みと前処理ですが、これまでと同様に前処理として築年数の算出のための処理及び回帰モデル作成用の目的変数などの設定を行っています。

 

コード4 データ分割、標準化

続いてデータの分割(訓練用、テスト用)をデータの標準化処理ですが、これらもこれまでと同様の操作になりますが、1点データの分割についてrandam_stateを指定しています。通常はランダムに分割されますが、以前に最適化した条件を再現するため分割条件をしています。

 

コード5 予測モデルの作成

 実際の予測モデルの作成ですが、前回の記事でOptuna™ で最適化したハイパパラーメータの数値を利用するため、それらの数値を回帰モデル作成時のパラメータとして、指定しています。

 

 

コード6 データ比較、評価値算出

 続いて訓練データ、テストデータの予測値の算出とモデル評価値の算出を行っています。

 

コード7 作成モデルの保存

 以上で作成した回帰モデル及び標準化データをそれぞれjoblib及びpickleで保存しているのが上記コードになります。標準化処理をしている場合は標準化データも保存しておく必要があるようです。

 以上、ハイパーパラメーターを最適化したlightGBMモデルの保存について紹介させていただきました。次回はこの予測モデルを用いた中古不動産価格予測のtkinterを用いたアプリについて紹介したいと思います。