Python 3.x 如何在Scikit Learn中获取GridSearchCV()的OneVsRestClassifier(LinearSVC())的估计器键引用?
我正在scikit学习中对Python 3.x 如何在Scikit Learn中获取GridSearchCV()的OneVsRestClassifier(LinearSVC())的估计器键引用?,python-3.x,machine-learning,scikit-learn,grid-search,Python 3.x,Machine Learning,Scikit Learn,Grid Search,我正在scikit学习中对GridSearchCV的超参数进行网格搜索 这就是我如何准备要搜索的ML算法及其相关参数的方法。LogisticRegression()和RandomForestClassifier()分别使用正确的估计器键LogisticRegression\uuu和RandomForestClassifier\uuu指定 ml_algo_param_dict = \ { 'LR_OVR': {'clf': LogisticRegression(
GridSearchCV
的超参数进行网格搜索
这就是我如何准备要搜索的ML算法及其相关参数的方法。LogisticRegression()
和RandomForestClassifier()
分别使用正确的估计器键LogisticRegression\uuu
和RandomForestClassifier\uuu
指定
ml_algo_param_dict = \
{ 'LR_OVR': {'clf': LogisticRegression(),
'param': [{
'logisticregression__solver': ['lbfgs', 'liblinear'],
'logisticregression__penalty': ['l2'],
'logisticregression__C': [0.1, 1, 10],
'logisticregression__class_weight': [None],
'logisticregression__multi_class': ['ovr'],
'logisticregression__max_iter': [1000, 4000],
}, {
'logisticregression__solver': ['newton-cg'],
'logisticregression__penalty': ['l2'],
'logisticregression__C': [0.1, 1, 10],
'logisticregression__class_weight': [None],
'logisticregression__multi_class': ['ovr'],
'logisticregression__max_iter': [1000, 4000],
}]},
'RF_OVR': {'clf': RandomForestClassifier(),
'param': [{
'randomforestclassifier__n_estimators': [100],
'randomforestclassifier__max_depth': [150, 200],
'randomforestclassifier__random_state': [888],
}]},
'SVC_OVR': {'clf': OneVsRestClassifier(LinearSVC()),
'param': [{
'onevsrestclassifier_linearsvc__C': [100],
'onevsrestclassifier_linearsvc__max_iter': [400, 6000],
}]},
但是关于OneVsRestClassifier(LinearSVC())
呢?我尝试了很多方法(例如,onevsrestclassifier\u linearsvc\uuuu
,onevsrestclassifier\uuu
,linearsvc\uu
),但不断得到错误使用估计器检查可用参数列表。获取参数().keys()
。如何找到正确的估计键
添加以下代码以显示dict的使用方式
transformer_num = Pipeline(steps=[
('imputer', SimpleImputer(strategy='median')),
('scaler', StandardScaler())])
transformer_cat = Pipeline(steps=[
('imputer', SimpleImputer(strategy='constant', fill_value='')),
('onehotencoder', OneHotEncoder(handle_unknown='ignore'))])
preprocessor = ColumnTransformer(
transformers=[
('num', transformer_num, feature_list_num),
('cat', transformer_cat, feature_list_cat),
])
for algo_key, algo_val in ml_algo_param_dict.items():
f1 = make_scorer(f1_score , average='micro')
pipe = make_pipeline(preprocessor, algo_val['clf'])
grid = GridSearchCV(pipe, algo_val['param'], n_jobs=-1, cv=5, scoring=f1, refit=True)
grid.fit(X_train, y_train)
我试过
'onevsrestclassifier\u linearsvc\uuu C','onevsrestclassifier\u linearsvc\uu C','onevsrestclassifier\uu linearsvc\uu C','onevsrestclassifier\uu linearsvc\uu C','onevsrestclassifier\u linearsvc\uu linearsvc','onevsrestclassifier\u linearsvc\uu估计器\uu C','estimator\uu C'
,但是所有人都给了我同样的错误请使用“estimator.get_params().keys()”
检查可用参数列表以下是正常工作的引用命名:
'SVC_OVR': {'clf': OneVsRestClassifier(LinearSVC()),
'param': [{
'onevsrestclassifier__estimator__C': [1, 10],
'onevsrestclassifier__estimator__max_iter': [10000],
}]},