首页 > 解决方案 > 无法查看 RandomizedSearchCV 的结果

问题描述

我正在为分类问题制作一个使用管道的示例。我的问题是我无法RandomizedSearchCVscikit-learnin 中看到结果python

我以前使用GridSearchCV过这些参数(estimator、param_grid、scoring、cv),并且能够看到最佳的超参数组合。我的scikit-learn版本是 0.20.0

import sklearn
print('The scikit-learn version is {}.'.format(sklearn.__version__))

X, y = make_classification(n_classes=2, class_sep=0, weights=[0.05,0.95],n_clusters_per_class=2,
                           n_features=2,  n_samples=10000, n_informative=2, n_redundant=0, n_repeated=0)

#Repeated ENN
renn = RepeatedEditedNearestNeighbours( n_neighbors = 5, n_jobs= 2, max_iter = 100)
#Oversampling after have undersampled
smote_enn = SMOTEENN()
#Classifier
classifier = LogisticRegression(random_state = 0)

# Make the splits
n = 2
kf = StratifiedKFold(n_splits = n, random_state = 0)

# Create regularization penalty space
penalty = ['l1', 'l2']

# Create regularization hyperparameter space
C = np.logspace(0, 4, 10)

# Create hyperparameter options
parameters = dict(C=C, penalty=penalty)

random_search = RandomizedSearchCV(pipeline, param_distributions=parameters,  n_iter=1000,  cv = kf, return_train_score = True)


 gg = random_search.fit(X, y)

 gg .best_estimator_

random_search.cv_results_

我收到此错误

ValueError:估计器管道的无效参数惩罚(memory=None,steps=[('logisticregression',LogisticRegression(C=1.0,class_weight=None,>dual=False,fit_intercept=True,intercept_scaling=1,max_iter=100,multi_class= 'warn',n_jobs=None,惩罚='l2',random_state=0,solver='warn',tol=0.0001,verbose=0,warm_start=False))])。使用 `estimator.get_params().keys() 检查 > 可用参数列表

我必须如何编写参数?如何从网格搜索中查看最佳参数的结果?

标签: python-3.xscikit-learngrid-search

解决方案


推荐阅读