如何为使用GridSearchCV尝试的每个模型获得F1得分和准确性?

时间:2018-07-06 17:43:13

标签: python machine-learning scikit-learn

我正在尝试为使用我的SVM训练的每个模型获取F1 scoreaccuracy,因此对于使用GridSearchCV尝试的每个参数集。我可能已经找到了针对accuracy的方法,但是我不知道如何针对F1 Score的方法。

例如,我想要内核linearc=1e-3的F1。然后再次是linear and C=1e-1的F1,最后是linear and C=1C=10的F1得分。怎么样?

以下是我的一些相关代码:

parameters = {'kernel':['linear'], 'C':[1e-3, 1e-1, 1, 10]}

svc = svm.SVC(cache_size=2048)
cv = StratifiedShuffleSplit(n_splits=5, test_size=0.2, random_state=42)
clf = GridSearchCV(svc, parameters, cv=cv, n_jobs=8)
grid_result = clf.fit(X_train, y_train)
grid_result.cv_results_
my_dict = defaultdict(partial(np.ndarray, 0))
my_dict['params'] = grid_result.cv_results_['params']
my_dict['mean_valid_score'] = grid_result.cv_results_['mean_test_score'] # accuracy for valid dataset
my_dict['mean_train_score'] = grid_result.cv_results_['mean_train_score'] # accuracy for train

我阅读了GridSearchCV文档,但是找不到任何可以满足我需要的内容。

我发现cv_results_,它提供了一些信息,例如mean_valid_scoremean_train_score,如果我理解正确的话,似乎为每个尝试的模型给了accuracy分数。但是F1不在那里。

还有scoring似乎很有趣,也许它满足了我的要求?但是我不明白如何将其用于解决我的问题,以及如何实际获得每个尝试过的模型的分数。

我还在某些论坛grid_scores_上找到了类似SO thread的论坛,但现在似乎deprecated,到目前为止,我在文档中找不到关于此的任何信息吗?我们如何使用它?

我想做类似this的事情,但是要采取不同的措施:准确性和f1!

1 个答案:

答案 0 :(得分:0)

如果您尝试

clf = GridSearchCV(svc, parameters, scoring = ['f1','accuracy'], cv=cv, n_jobs=8)

然后像执行操作一样访问gridsearch.cv_results_,您应该得到想要的内容。