『書籍のエラー対策』 Pythonのscikit-learnライブラリで列名を確認するメソッドget_feature_names()を実行する際、「AttributeError: ‘PolynomialFeatures’ object has no attribute ‘get_feature_names’」が表示される

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

2024年2月時点の最新実行環境において、書籍に記述されているコードを間違いなく入力してもエラーとなる箇所があったので対策方法を掲載します。

書籍が出版された後も実行環境は更新され続けるので、書き方が変わってしまったり期待通りの結果が得られなくなることは仕方がないことではあります。

とはいえ、最新の実行環境でも書籍に記載されている結果になってほしいですよね。
そんな悩める人たちに役立てば幸いです。

エラー内容

P.402 第Ⅲ部 第11章 「さまざまな教師あり学習:回帰」 – 11.1.4 リッジ回帰の利用 / 列名を確認する処理のコード11-4 get_feature_names()関数

pf.get_feature_names()

を実行すると

AttributeError
…
AttributeError: 'PolynomialFeatures' object has no attribute 'get_feature_names'

とエラーが表示されます。

実行環境

下記の環境で発生を確認しています。

  • Anaconda3-2023.09-0-Windows-x86_64
  • JupyterLab 3.6.3
  • Python 3.11.5
  • pandas 2.0.3

エラーの原因

get_feature_namesメソッドが削除された為です。

解決方法

get_feature_names を get_feature_names_out にします。

pf.get_feature_names_out()

scikit-learn Ver1.0で、get_feature_names_outがAPIとして追加され、get_feature_namesは非推奨になりました。

コメント

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