gpt4 book ai didi

python - 网格搜索CV : performance metrics on a selected class [unbalanced data-set]

转载 作者:太空狗 更新时间:2023-10-29 23:58:29 27 4
gpt4 key购买 nike

有没有一种方法可以对针对选定类的分数(例如“f1”)优化的参数值运行网格搜索,而不是针对所有类的默认分数?

[编辑] 假设这样的网格搜索应该返回一组参数来最大化所选类别的分数(例如“f1”、“准确度”、“召回率”),而不是所有类别的总分类。这种方法似乎很有用,例如对于高度不平衡的数据集,在尝试构建一个分类器时,该分类器在具有少量实例的类上做合理的工作。

具有默认评分方法的 GridSearchCV 示例(此处:所有类的“f1”):

from __future__ import print_function

from sklearn.cross_validation import train_test_split
from sklearn.grid_search import GridSearchCV
from sklearn.metrics import classification_report
from sklearn.svm import SVC

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

tuned_parameters = [{'kernel': ['rbf'], 'gamma': [1e-3, 1e-4, 1e-5],
'C': [1, 50, 100, 500, 1000, 5000]},
{'kernel': ['linear'], 'C': [1, 100, 500, 1000, 5000]}]

clf = GridSearchCV(SVC(), tuned_parameters, cv=4, scoring='f1', n_jobs=-1)
clf.fit(X_train, y_train)

print("Best parameters set found on development set:")
print()
print(clf.best_estimator_)

y_true, y_pred = y_test, clf.predict(X_test)
print(classification_report(y_true, y_pred))

如何优化参数以获得所选类的最佳性能,或在 GridSearchCV 中合并对一系列 class_weight 的测试?

最佳答案

需要额外参数的评分指标不是网格搜索中预建评分函数的一部分。

在这种情况下,需要的附加参数是选择必须进行评分的类别

您需要从 sklearn.metrics 导入 make_scorerfbeta_score

make_scorer 将指标转换为可用于模型评估的可调用对象

F-beta 分数是精确率和召回率的加权调和平均值,在 1 时达到最佳值,在 0 时达到最差值

F-beta 的参数

beta:beta < 1 赋予更多的权重给准确率,而 beta > 1 有利于召回率,beta -> 0 只考虑准确率,而 beta -> inf 只考虑召回率

pos_label:指定需要做评分的类(str或int,默认为1)

代码示例如下

from sklearn.metrics import make_scorer, fbeta_score

f2_score = make_scorer(fbeta_score, beta=2, pos_label=1)

clf = GridSearchCV(SVC(), tuned_parameters, cv=4, scoring=f2_score, n_jobs=-1)

关于python - 网格搜索CV : performance metrics on a selected class [unbalanced data-set],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31728553/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com