我正在尝试为使用我的SVM训练的每个模型获取F1 score
和accuracy
,因此对于使用GridSearchCV
尝试的每个参数集。我可能已经找到了针对accuracy
的方法,但是我不知道如何针对F1 Score
的方法。
例如,我想要内核linear
和c=1e-3
的F1。然后再次是linear and C=1e-1
的F1,最后是linear and C=1
和C=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_score
和mean_train_score
,如果我理解正确的话,似乎为每个尝试的模型给了accuracy
分数。但是F1不在那里。
还有scoring似乎很有趣,也许它满足了我的要求?但是我不明白如何将其用于解决我的问题,以及如何实际获得每个尝试过的模型的分数。
我还在某些论坛grid_scores_
上找到了类似SO thread的论坛,但现在似乎deprecated,到目前为止,我在文档中找不到关于此的任何信息吗?我们如何使用它?
我想做类似this的事情,但是要采取不同的措施:准确性和f1!
答案 0 :(得分:0)
如果您尝试
clf = GridSearchCV(svc, parameters, scoring = ['f1','accuracy'], cv=cv, n_jobs=8)
然后像执行操作一样访问gridsearch.cv_results_,您应该得到想要的内容。