表格GridSearchCV的结果

我使用GridShearchCV类在具有RBF内核的SVM上进行了网格搜索+交叉验证,以找到参数C和gamma的最佳值。现在,我想以表格格式获取结果,例如

C/gamma 1e-3 1e-2 1e3
0.1      0.2  ..  0.3
1        0.9
10       ..   
100      ..

其中单元格包含该对参数值的准确性得分。

或者至少在无法解决第一个问题的情况下,更容易

C    gamma  accuracy
0.1  1e-4      0.2 
...

我对Python不太熟练,所以我不知道从哪里开始。您能给我一些方法做这种表示吗?最好的解决方案是将表格作为图表,但在控制台中以这些格式进行简单打印也可以。预先谢谢你。

kankanguoqu 回答:表格GridSearchCV的结果

您可以利用cv_results_对象的gridsearchCV属性,如下所示:

from sklearn import svm,datasets
from sklearn.model_selection import GridSearchCV
iris = datasets.load_iris()
parameters = {'kernel':('linear','rbf'),'C':[1,10]}
svc = svm.SVC(gamma="scale")
clf = GridSearchCV(svc,parameters,cv=5)
clf.fit(iris.data,iris.target)

现在您使用clf.cv_results_

{'mean_fit_time': array([0.00049248,0.00051575,0.00051174,0.00044131]),'mean_score_time': array([0.0002739,0.00027657,0.00023718,0.00023627]),'mean_test_score': array([0.98,0.96666667,0.97333333,0.98      ]),'param_C': masked_array(data=[1,1,10,10],mask=[False,False,False],fill_value='?',dtype=object),'param_kernel': masked_array(data=['linear','rbf','linear','rbf'],'params': [{'C': 1,'kernel': 'linear'},{'C': 1,'kernel': 'rbf'},{'C': 10,'kernel': 'rbf'}],'rank_test_score': array([1,4,3,1],dtype=int32),'split0_test_score': array([0.96666667,1.,0.96666667]),'split1_test_score': array([1.,1.        ]),'split2_test_score': array([0.96666667,0.9,'split3_test_score': array([0.96666667,0.93333333,'split4_test_score': array([1.,1.]),'std_fit_time': array([1.84329827e-04,1.34653950e-05,1.26220210e-04,1.76294378e-05]),'std_score_time': array([6.23956317e-05,1.34498512e-05,3.57596078e-06,4.68175419e-06]),'std_test_score': array([0.01632993,0.02108185,0.03887301,0.01632993])}

您可以使用paramsmean_test_score使用以下命令来构造您要查找的数据框:

pd.concat([pd.DataFrame(clf.cv_results_["params"]),pd.DataFrame(clf.cv_results_["mean_test_score"],columns=["Accuracy"])],axis=1)

最终的数据帧看起来像

    C   kernel  Accuracy
0   1   linear  0.980000
1   1   rbf     0.966667
2   10  linear  0.973333
3   10  rbf     0.980000

希望这会有所帮助!

,

也许更容易:

pd.DataFrame({'param': clf.cv_results_["params"],'acc': clf.cv_results_["mean_test_score"]})

或:

df = pd.DataFrame(clf.cv_results_)
本文链接:https://www.f2er.com/3110730.html

大家都在问