インプレスの「スッキリわかる Pythonによる機械学習入門」のエラー対策記事です。

書籍に記述されているコードを間違いなく入力しても警告(Warning)が発生した箇所があったので対策方法を掲載します。
エラーではなく警告なので処理結果は得られるのですが、気持ちの良いものではありませんので、対策します。
警告内容
P.449 第Ⅲ部 第12章 「さまざまな教師あり学習:分類」 – 12.3.3 アダブースト / アダブーストの実装のコード12-18 fitメソッドで、モデルの学習
model.fit(x_train, y_train)
を実行すると
FutureWarning: FutureWarning: The SAMME.R algorithm (the default) is deprecated and will be removed in 1.6. Use the SAMME algorithm to circumvent this warning.
warnings.warn(
と警告が表示されます。
実行環境
下記の環境で発生を確認しています。
- Anaconda3-2024.10-1-Windows-x86_64
- JupyterLab 4.2.5
- Python 3.12.7
- pandas 2.2.3
警告の原因
モデル作成時、引数の「アルゴリズム」に対するデフォルトが非推奨となっている為です。
P.426 コード12-5 ロジスティック回帰による学習では
model = AdaBoostClassifier(n_estimators=500, random_state=0, estimator=base_model)
※ 引数algorithmを指定していないので、デフォルトの'SAMME.R'になる
となっています。
解決方法
モデル作成時、algorithm引数に対してアルゴリズムを明示的に指定します。
model = AdaBoostClassifier(n_estimators=500, random_state=0, estimator=base_model, algorithm='SAMME')
警告内容において、
The SAMME.R algorithm (the default) is deprecated and will be removed in 1.6.
(SAMME.R アルゴリズム (デフォルト) は非推奨となり、1.6 で削除される予定です。)
と記載があります。
scikit-learnのドキュメントには、引数algorithmはバージョン1.8では削除される予定です。アルゴリズムは「SAMME」のみ実装します。と記載があります。
コメント