[Python Learning] [scikit-learn] Pipeline reports error fit_transform() takes 2 positional arguments but were 3 given.
2022-02-16 07:42:53
最近読んでいた本 Scikit-Learn & TensorFlowでハンズオン機械学習 の本でパイプラインのことを知り、イミテーターでこのコードを書きました。
- num_attribs=list(housing_numerical)
- cat_attribs=[]です。 <スパン 海への近さ"海への近さ" ]
- <スパン
- num_pipeline=パイプライン([)
- ( "セレクタ" ,DataFrameSelector(num_attribs))。
- ( <スパン インピュータ。 ,インピュータ(strategy=) "中央値" )),
- ( "attribs_adder"。 ,CombinedAttributesAdder()),
- ( "std_scaler" ,StandardScaler())です。
- ])
- <スパン
- cat_pipeline=パイプライン([ ])
- ( "セレクタ" ,DataFrameSelector(cat_attribs)),
- <span style= <スパン "color:#ff0000;"。 >( "label_binarizer"。 , LabelBinarizer())</span>。
- ])
- <スパン
- full_pipeline=FeatureUnion(transformer_list=[]の場合。
- ( "num_pipeline" ,num_pipeline)。
- ( "cat_pipeline" ,cat_pipeline)。
- ])
しかし、次のようなエラーが報告されます。
- TypeError: fit_transform() は位置引数を2つ取りますが、3つ与えられました。
これはバージョンアップによる問題だろうと思い、案の定、新しいバージョンを ここで という質問で、答えが見つかりました。以下はその引用です。
パイプラインは、LabelBinarizerの想定している
fit_transform
メソッドは、3つの位置引数を取るように定義されています。
def fit_transform(self, x, y)
... ...rest of the code
と定義されているのに対して、2つしか取れません。
def fit_transform(self, x):
... ...rest of the code
そこで、解決策としては、LabelBinarizerをベースに、3つのパラメータself,X,y=Noneを持つことができるMyLabelBinarizerを自作することです。
from sklearn.base import TransformerMixin #gives fit_transform method for free
class MyLabelBinarizer(TransformerMixin):
def __init__(self, *args, **kwargs):
self.encoder = LabelBinarizer(*args, **kwargs)
def fit(self, x, y=0):
self.encoder.fit(x)
return self
def transform(self, x, y=0):
return self.encoder.transform(x)
関連
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】matplotlibのbbox_to_anchorとloc
-
[解決済み】Pythonの__rlshift__、__ror__について
-
[解決済み] DistutilsOptionError: homeかprefix/exec-prefixのどちらかを指定しなければならない -- 両方ではない
-
[解決済み] forまたはwhileループでn回何かを行う
-
[解決済み] Bokeh HoverToolに"?"が表示される。
-
[解決済み] popメソッド(またはdel文)を持つforループがすべてのリスト要素に対して反復処理を行わない理由
-
[解決済み] コラッツ予想列
-
ターミナルでpipコマンドを使用するとプロンプトが表示されます。ランチャーで致命的なエラーが発生しました。Unable to create process using '"' と表示されます。
-
Windowsのコマンドはエラーで実行できない: が内部として認識されない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み】SQLALCHEMY_TRACK_MODIFICATIONSを無効にする方法は?
-
[解決済み】TKinterでボタンを無効にする/有効にする
-
Python+OpenCV 6種類のリアルタイム画像処理を詳しく解説
-
[解決済み] Plexの「最近追加した項目」からビデオを削除する
-
[解決済み] BeautifulSoupです。find_all()とunicodeの問題?
-
[解決済み] statsmodels.api が MissingDataError を返す:多変量回帰の適合時に exog に inf または nans が含まれる
-
[解決済み] Fatal Python error: initfsencoding: unable to load file system codec
-
pip install MySQL-python reports "EnvironmentError: mysql_config not found" (環境エラー:mysql_configが見つかりません。
-
pythonによるExcelのデータベースへの適応的インポート