【发布时间】:2021-08-22 00:33:30
【问题描述】:
尝试运行以下命令:
class N1:
def __init__(self):
pass
def fit(self):
return self
def transform(self, X):
return X.assign(num_1="n1")
X = pd.DataFrame(
{
"n1": [1, 2, 3],
"n2": [3, 4, 4],
"c1": ["a", "b", "c"],
"c2": ["x", "y", "z"],
}
)
num_pipeline = Pipeline(
[
("num_1", N1()),
]
)
num_pipeline.fit(X)
# same error with:
# num_pipeline.fit_transform(X)
给出错误:
TypeError: fit() takes 1 positional argument but 3 were given
我真的不知道这是怎么发生的,或者如何解决。
完整的追溯:
387 return last_step.fit_transform(Xt, y, **fit_params_last_step)
388 else:
--> 389 return last_step.fit(Xt, y,
390 **fit_params_last_step).transform(Xt)
391
TypeError: fit() takes 1 positional argument but 3 were given
我希望返回数据框 X 以及添加的列 num_1
【问题讨论】:
-
您可以调用 transform ,因为更改是:
new_df=num_pipeline.transform(X)如果涉及 fit 函数,则需要答案部分中的 y 或 y=None。
标签: python scikit-learn pipeline