『書籍のエラー対策』 Pythonのscikit-learnライブラリでモデル変数のメソッドscore()を実行する際、「FutureWarning: ‘multi_class’ was deprecated in version 1.5 …」が表示される

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

書籍に記述されているコードを間違いなく入力しても警告(Warning)が発生した箇所があったので対策方法を掲載します。

エラーではなく警告なので処理結果は得られるのですが、気持ちの良いものではありませんので、対策します。

警告内容

P.427 第Ⅲ部 第12章 「さまざまな教師あり学習:分類」 – 12.1.2 ロジスティック回帰 / ロジスティック回帰の実装のコード12-6 scoreメソッドで、正解率を確認

print( model.score(x_train, y_train) )

を実行すると

FutureWarning: 'multi_class' was deprecated in version 1.5 and will be removed in 1.7. From then on, it will always use 'multinomial'. Leave it to its default value to avoid 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 = LogisticRegression(random_state=0, C=0.1, multi_class='auto', solver='lbfgs')

となっています。

解決方法

multi_class引数を削除します。

model = LogisticRegression(random_state=0, C=0.1, solver='lbfgs')

警告内容において、
‘multi_class’ was deprecated in version 1.5 and will be removed in 1.7.
(‘multi_class’はバージョン1.5で非推奨となり、1.7で削除される予定です。)
と記載があります。

scikit-learnのドキュメントには、バージョン1.7以降は、推奨される「多項式」が常に使用されます。と記載があります。

コメント

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