我正在尝试为我的数据集构建一个分类器,但同时使用我的 gridsearchCV 和管道时遇到了问题。这是我的代码:
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import Imputer, StandardScaler
from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, classification_report
imp = Imputer()
scaler = StandardScaler()
clf = LogisticRegression(multi_class='multinomial')
Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, test_size=0.3, random_state=42)
pipeline = make_pipeline(imp, scaler, clf)
param_grid = {'penalty':["l1","l2"], 'C':np.arange(0.001, 1, 0.01),
'solver': ['newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga']}
search = GridSearchCV(estimator=pipeline, param_grid=param_grid, cv=5)
一旦我在搜索中调用该方法,我就会收到以下错误。
search.fit(Xtrain, ytrain)
ValueError: Invalid parameter C for estimator Pipeline(memory=None,
steps=[('imputer', Imputer(axis=0, copy=True, missing_values='NaN', strategy='mean', verbose=0)), ('standardscaler', StandardScaler(copy=True, with_mean=True, with_std=True)), ('logisticregression', LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
intercept_scaling=1, max_iter=100, multi_class='multinomial',
n_jobs=1, penalty='l2', random_state=None, solver='liblinear',
tol=0.0001, verbose=0, warm_start=False))]). Check the list of available parameters with `estimator.get_params().keys()`.
我不确定我的 C 参数如何无效。有谁知道我做错了什么?