Scikit-Learnのエラーメッセージ: fit_transform()は2つの位置引数を取りますが、3つ与えられました。
2022-02-16 03:25:31
コード
num_attribs = list(housing_num)
cat_attribs = ["ocean_proximity"]
num_pipeline = Pipeline([
('selector', DataFrameSelector(num_attribs)),
('imputer', Imputer(strategy="median")),
('attribs_adder', CombinedAttributesAdder()),
('std_scaler', StandardScaler()),
])
cat_pipeline = Pipeline([
('selector', DataFrameSelector(cat_attribs)),
('label_binarizer', MyLabelBinarizer()),
])
from sklearn.pipeline import FeatureUnion
full_pipeline = FeatureUnion(transformer_list=[
("num_pipeline", num_pipeline),
("cat_pipeline", cat_pipeline),
])
housing_prepared = full_pipeline.fit_transform(housing)
housing_prepared
エラーを報告する
sklearnを使用するパイプラインがエラーを報告する。
Error message: fit_transform() takes 2 positional arguments but 3 were given
エラーチェック
エラーの原因は、pipelineがLabelBinarizerのfit_transformメソッドを呼び出して、次の3つのパラメータを見つけていることです。
def fit_transform(self, x, y)
... ...rest of the code
そして、実はLabelBinarizerのfit_transform()メソッドでは、2つのパラメータしか定義していません。
def fit_transform(self, x):
... ...rest of the code
解決方法
3つのパラメータを渡すことができる独自のカスタムLabelBinarizerクラスをラップします。
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)
Keep your code the same only instead of using LabelBinarizer(), use the class we created : MyLabelBinarizer().
コード中のLabelBinarizerクラスを、カスタムのMyLabelBinarizerクラスに置き換えます。
関連
-
[解決済み] モジュールに属性がない
-
[解決済み】 tf.contrib.layers.xavier_initializer() を 2.0.0 に変更する。
-
[解決済み】__init__で「このコンストラクタは引数を取らない」というエラーが発生する。
-
Djangoプロジェクトの構成は、独立した実装を分割する
-
PythonでExcelとWordを自動化し、オフィスの自動化を実現
-
Python正規表現(推奨)
-
[解決済み] error: option --single-version-externally-managed not recognized "は何を示しているのですか?
-
[解決済み] related_nameは何に使うのですか?
-
[解決済み] Pythonにおけるメソッドと属性の違い
-
[解決済み】Jupyterコマンド'notebook'の実行に失敗しました。[Errno 'jupyter-notebook' not found] 2
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Python [Errno 98] アドレスはすでに使用中です。
-
Pythonのdefaultdictとdictの違いについて
-
[解決済み] TypeErrorを取得中。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() に 1 つの必須位置引数 'on_delete' が欠落しています。
-
[解決済み] ループの難しさ
-
[解決済み] 上記例外の処理中に別の例外が発生した
-
[解決済み] ValueError:未変換のデータが残っています。02:05
-
[解決済み] 標準エラーストリームのロギングを無効にする方法は?
-
AttributeError: 'tuple' オブジェクトに '_meta' 属性がない Solution
-
Python read/write file Chinese mess Error TypeError: write() argument must be str, not bytes+.
-
上流からの応答ヘッダーの読み込み中に上流が接続を早々に切断した 解析と対処法