我正在尝试获取使用 SVM 训练的每个模型的 F1 分数
和 准确度
,因此对于使用 GridSearchCV
尝试的每组参数>。我可能已经找到了如何提高准确性
,但我不知道如何提高F1 Score
。
例如,我想要内核线性
的F1和c=1e-3
。然后再次对线性和 C=1e-1
进行 F1,最后对线性和 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
似乎给了我准确性<如果我理解正确的话,
尝试的每个模型的分数。但 F1 不在那里。
还有scoring这看起来很有趣,也许它符合我的要求?但我不明白如何将它用于我的问题,以及如何实际获得每个尝试模型的分数。
我还在一些论坛上找到了grid_scores_
,像这样SO thread但似乎是deprecated现在,我现在在文档中找不到任何有关此内容的信息?我们如何使用它?
我想做类似 this 的事情,但针对不同的度量:准确度和 f1!
最佳答案
如果你尝试
clf = GridSearchCV(svc, parameters, scoring = ['f1','accuracy'], cv=cv, n_jobs=8)
然后像您正在做的那样访问 gridsearch.cv_results_ ,您应该会得到您正在寻找的内容。
关于python - 如何获得使用 GridSearchCV 尝试的每个模型的 F1 分数和准确度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51215433/