FeatureUnion:Sklearn FeatureUnion不允许fit参数

2024-04-26 03:21:17 发布

您现在位置:Python中文网/ 问答频道 /正文

FeatureUnion无法匹配。下面代码fit()的最后一行抛出错误:

from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest

iris = load_iris()    
X, y = iris.data, iris.target
pca = PCA(n_components=2)
selection = SelectKBest(k=1)
combined_features = FeatureUnion([("pca", pca), ("univ_select", selection)])
svm = SVC(kernel="linear")

pipeline = Pipeline([("features", combined_features), ("svm", svm)])
pipeline.fit (X, y, features__univ_select__k=2)

引发错误:

TypeError: fit_transform() got an unexpected keyword argument 'univ_select__k'

Tags: fromimportirispipeline错误sklearnselectfit
1条回答
网友
1楼 · 发布于 2024-04-26 03:21:17

参数features__univ_select__k=2fit中没有使用;另一方面,在这里根本没有必要。你知道吗

如果您遵循scikit learn docs中的特性联合example(就像您看起来的那样),您应该注意到它在param_grid中用作参数,而不是在fit中。你知道吗

但这里不执行任何参数网格搜索;既然已经定义了它

pca = PCA(n_components=2)
selection = SelectKBest(k=1)
combined_features = FeatureUnion([("pca", pca), ("univ_select", selection)])

对于要使用的特性的数量没有任何其他的“选择”,因此您不应该使用任何features__univ_select__k=2参数。简单的给予

pipeline.fit (X, y)

工作是否:

Pipeline(memory=None,
     steps=[('features', FeatureUnion(n_jobs=None,
       transformer_list=[('pca', PCA(copy=True, iterated_power='auto', n_components=2, random_state=None,
  svd_solver='auto', tol=0.0, whiten=False)), ('univ_select', SelectKBest(k=1, score_func=<function f_classif at 0x000000000808AD08>))],
       tran...r', max_iter=-1, probability=False, random_state=None,
  shrinking=True, tol=0.001, verbose=False))])

相关问题 更多 >