『書籍のエラー対策』 Pythonのscikit-learnライブラリでモデル変数のメソッドfit()を実行する際、「FutureWarning: The SAMME.R algorithm (the default) is deprecated …」が表示される

インプレスの「スッキリわかる 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」のみ実装します。と記載があります。

コメント

タイトルとURLをコピーしました