#54 Section10 分類(7)モデルの保存・再利用

>100 Views

February 06, 26

スライド概要

PyCaretのsave_model関数を使用すると、選出した最良のモデルを簡単に外部ファイル(.pkl形式)として保存できます。例えば、save_model(best, 'my_first_pipeline')と実行するだけで、現在の作業ディレクトリに保存されます。

この機能の特筆すべき点は、単なるモデル単体ではなく、データの前処理から最終的な学習アルゴリズム、ハイパーパラメータの設定までを一つの「パイプライン」として丸ごと保存できることです。これにより、後日全く同じ条件で分析を再現することが可能になります。

また、保存したモデルは、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 10 分類(7) モデルの保存・再利用 Setup Compare Models Analyze Model データサイエンス チュートリアル Prediction Save Model 1

2.

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

3.

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

4.
[beta]
4th STEP 機械学習 Section10 分類(7) モデルの保存・再利用

モデルの保存 出力(2)
1. Transformation Pipeline and Model Successfully Saved→一連のデータ変換処理(Transformation Pipeline)と学習済みモデル
(Model)が、指定されたファイルに問題なく保存されたことを示すメッセージです。
2. Pipeline(memory=Memory(location=None), steps=[...], verbose=False)→保存された変換パイプラインの詳細を示しています。
① memory=Memory(location=None) →パイプラインの処理過程でキャッシュを使用しない設定であることを示しています。
② steps=[...] →パイプラインに含まれる個々の処理ステップをリスト形式で示しています。この例では、以下の2つのステップが含まれています。
('numerical_imputer', TransformerWrapper(exclude=None, include=['Number of times pregnant', 'Plasma
glucose concentration a 2 hours in an oral glucose tolerance test', 'Diastolic blood pressure (mm Hg)', 'Triceps
skin fold thickness (mm)', '2-Hour serum insulin (mu U/ml)', 'Body mass index (weight in kg/(height in
m)^2)', 'Diabetes pedigre...→numerical_imputerという名前の変換ステップです。TransformerWrapperが
使用されており、includeパラメータで指定された数値の特徴量(妊娠回数、血漿ブドウ糖濃度、経口ブドウ糖負荷試験の時間、拡張期血圧、上腕
三頭筋の皮膚の厚さ、2時間後の血清インスリン、BMI、糖尿病の家族歴など)に対して何らかの処理(例えば、欠損値の補完など)が行われること
を示唆しています。exclude=Noneなので、これらの指定された特徴量のみが処理の対象となります。

TransformerWrapper(exclude=None, include=None, transformer=CleanColumnName
(match='[\\]\\[\\,\\{\\}\\"\\:]+')) →匿名(名前がない)の変換ステップで、TransformerWrapperが使用されています。
includeとexcludeがNoneであることから、データセットのすべての列に対して処理が行われると考えられます。
transformer=CleanColumnNames(match='[\\]\\[\\,\\{\\}\\"\\:]+')から、列名の中に特定の文字(バックスラッシュ、角括弧、
カンマ、波括弧、二重引用符、コロン)が含まれている場合に、それらを削除または置換するなどのクリーニング処理が行われると推測できます。

データサイエンス チュートリアル

4

5.

4th STEP 機械学習 Section10 分類(7) モデルの保存・再利用 モデルの保存 出力(3) (‘trained_model’, LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True, intercept_scaling=1, l1_ratio=None, max_iter=1000, multi_class=‘auto’, n_jobs=None, penalty=‘l2’, random_state=123, solver=‘lbfgs’, tol=0.0001, verbose=0, warm_start=False))→これは、trained_modelという名前 のステップで、学習済みのロジスティック回帰モデル (LogisticRegression) が保存されていることを示しています。括弧内には、このモデルの様々な ハイパーパラメータの設定値が表示されています。例えば、正則化の強さを制御するC=1.0、使用する最適化アルゴリズムであるsolver=‘lbfgs’、 L2正則化 (penalty=‘l2’)、乱数シードのrandom_state=123などが確認できます。 ③ verbose=False→パイプラインの処理中に詳細なログ出力をしない設定であることを示しています。 3. ‘my_first_pipeline.pkl’→保存されたパイプラインとモデルが格納されているファイルの名前が my_first_pipeline.pkl であることを示しています。 拡張子 .pkl は、Pythonのオブジェクトをシリアライズ(直列化)して保存するための一般的な形式であるpickle形式であることを意味します。 データサイエンス チュートリアル 5

6.

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