#63 Section 18 回帰(7)モデルの保存

-- Views

February 09, 26

スライド概要

PyCaretのsave_model関数を使えば、苦労して構築したモデルを「.pkl(pickle形式)」で保存し、いつでも再利用可能になります。

この機能の最大の特徴は、単なるモデル単体ではなく、データの前処理から最終的な学習までの全工程を一つの「パイプライン」として丸ごと保存できる点です。これにより、後日読み込んだ際も、前処理の条件を再現する手間なく、即座に同じ品質で予測を実行できます。ファイルはバイナリ形式のため中身を直接テキスト検索することはできませんが、コンピュータが効率的に読み書きできる「資産」として残ります。

保存したモデルを再利用するには、load_model関数で呼び出します。読み込み時の詳細(▶ボタンを展開)を確認すれば、適用された全ステップやハイパーパラメータを正確に把握でき、過去の自分の仕事を「解剖」することも容易です。

profile-image

すべてのビジネスパーソンが意思決定プロセスにデータを活用する思考を身につけるため、まずは、データサイエンスの分析を体験していきましょう。SECIモデルの最初の段階、共同化(Socialization)からはじめていきます。 下記のブログで、ここにアップしたスライド、動画を随時、公開中です。 【ブログ】https://tutorial4datascience.blogspot.com/ 【Youtubeチャンネル】https://www.youtube.com/@DataScience_for_everyone 【Kindle】そして、このブログをまとめて書籍にしました!   https://amzn.to/4ryVppn   https://amzn.to/4pGgFb1

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

4th STEP 機械学習 Section 18 回帰(7) モデルの保存・再利用 Setup Compare Models Analyze Model データサイエンス チュートリアル Prediction Save Model 1

2.

4th STEP 機械学習 Section 18 回帰(7) モデルの保存 モデルの保存 最後は、save_model関数を使用して、今までの分析の流れを後で使用するためにディスクに保存していきます。 save_model(選択したモデルの名前, '保存するモデルの名前') 今回は、「my_first_pipeline」という名前で保存します。 「my_first_pipeline」は、現在の作業ディレクトリに、モデルの IDに *.pkl の拡張子が付いたファイル(*pickle形式)として保存されます。これは、後でいつでも利用することができます。 *pickle形式:Pythonのメモリ上にあるデータ構造(例えば、リスト、辞書、クラスのインスタンス、そしてPyCaretの学習済 みモデルなど)を、ファイルに書き込んで保存できる形式のことです。そして、保存したファイルから元のPythonオブジェクトを 復元できます。 pickle形式のファイルは、path引数で指定した場所、または今回のようにpath引数を省略した場合は現在の作業ディレクト リに保存されます。関数の出力や、ファイルシステムを直接確認することで、保存場所を特定できます。ただし、 pickleファイル はテキスト形式ではなく、コンピュータが効率的にデータを読み書きするためのバイナリ形式で保存されています。そのため、 Googleドライブの検索エンジンでは、ファイルの内容をテキストとして解析することが難しく、キーワードで検索することが 2 できません。 データサイエンス チュートリアル

3.

4th STEP 機械学習 Section 18 回帰(7) モデルの保存 モデルの保存 出力(1) save_model関数の主なアウトプットは、モデルだけでなく、データの前処理方法全体が一つのパイプラインとして保存されたこ と、そしてそのパイプラインに含まれる個々の処理ステップの詳細と、最終的な学習済みモデルの種類とハイパーパラメータ、そし て保存されたファイルの名前を示しています。この情報があれば、保存されたパイプラインがどのような処理を行い、どのようなモ デルを含んでいるかを後で正確に把握することができます(確認している人は少ないですが・・・)。 データサイエンス チュートリアル 3

4.
[beta]
4th STEP 機械学習 Section 18 回帰(7) モデルの保存

モデルの保存 出力(2)
1. Transformation Pipeline and Model Successfully Saved
→一連のデータ変換処理(Transformation Pipeline)と学習済みモデル(Model)が、指定されたファイルに問題なく保存されたことを示すメッセージ
です。
2.(Pipeline(memory=Memory(location=None),→PyCaretで学習済みのパイプライン全体の定義の始まりを示しています。
① ('numerical_imputer',TransformerWrapper(include=['age', 'bmi', 'children'],transformer=SimpleImputer())
→この部分は、数値データの欠損値補完を行う処理を記載しています。具体的には、「age、bmi、childrenの各列について、欠損値があった場合に、
その列の平均値で穴埋め(補完)する」という前処理を実行するように設定されています。
② ('categorical_imputer',TransformerWrapper(include=['sex', 'smoker','region’],
transformer=SimpleImputer(strategy='most_frequent')))
→この部分は、カテゴリデータの欠損値補完を行う処理を記載しています。具体的には、「sex、smoker、regionの各列について、欠損値があった場合に、
その列の中で最も多く出現する値(最頻値)で補完する」という前処理を実行するように設定されています。
③ ('ordinal_encoding',TransformerWrapper(include=['sex', 'smoker'],transfor...'data_type': dtype('O'),
'mapping': female 0
male
1
NaN
-1
dtype: int64},
{'col': 'smoker', 'data_type': dtype('O'),
'mapping': no
0
yes 1
NaN -1
dtype: int64}]))
データサイエンス チュートリアル

4

5.

4th STEP 機械学習 Section 18 回帰(7) モデルの保存 モデルの保存 出力(3) →この部分は、カテゴリ変数を機械学習モデルが扱える数値形式に変換する『ordinalエンコーディング』について記載しています。具体的には、下記のように 整数に変換しています。 「sex」:femaleは0、maleは1、NaNは-1(データ型は整数) 「smoker」:noが0、yesが1、NaNが-1(データ型は整数) ④ ('onehot_encoding',TransformerWrapper(include=['region'],transformer=OneHotEncoder(cols=['region’], handle_missing='return_nan',use_cat_names=True))) →この部分は、カテゴリ変数を機械学習モデルが扱える数値形式に変換する『ワンホットエンコーディング(One-Hot Encoding)』について記載しています。 具体的には、下記のように設定されていると記載してあります。 ・エンコーディングの対象となる列がregion ・欠損値はNaNのまま出力される(すなわち、「この行はどの既知の地域カテゴリにも属さない」という情報をワンホットエンコーディングしても保持するという ことです。) ・変換後に生成される新しい列名に、元のカテゴリ値の名前を使用するという設定(例:region列にsouthwestという値がある場合、変換後の列名 は region_southwestのようになります。) ⑤ ('trained_model',<catboost.core.CatBoostRegressor object at 0x7e14bf322910>)]) →save_modelでモデルの処理全体を保存したことで、この学習済みCatBoostモデル自体も、それまでのすべて前処理ステップと一緒にファイル (my_first_pipeline.pkl)内に完全に一体化されて保存されたことが記載されています。at 0x7e14bf322910は、このモデルオブジェクトがコンピュー ターのメモリ内のどこに存在しているかを示す技術的なアドレス情報です(特に重要ではありません)。 ⑥ 'my_first_pipeline.pkl‘) →これまでに設定・学習されたすべての前処理ステップ(データの補完、エンコーディングなど)と、最終的な学習済みモデル(CatBoostRegressor)が 一体となって保存されたファイルの名前です。 データサイエンス チュートリアル 5

6.

4th STEP 機械学習 Section 18 回帰(7) モデルの保存 モデルの再利用 load_model(‘保存したモデル名‘)を使うと、読み込む(ロードす る)ことができます。ここでは、読み込んだモデルを「loaded_best_pipeline」と 名付け直しています。 ① 「loaded_best_pipeline」と書くと、出力がこのようになります。 「 」をクリックすると、読み込んだモデルの詳細な説明が現れます。 ② これは、 『save_model』関数で保存した際の出力と同じ内容になって います。 データサイエンス チュートリアル 6