上下文:我正在处理一组带有二进制目标变量的数据。 1只占数据的10%,所以虽然我在使用GridSearchCV时使用了一些技术(例如下采样),但我只想对第1类的指标进行评分。
例如,我的最佳模型可能被选为0级的098召回和1级的0.28召回,整体为0.91,因为Class 0的数量超过Class 1的数量如此之多。
我更愿意选择0.93召回0级,1级0.58和整体召回0.85的模型。
以下是我的设置的一个简单示例:
param_grid = {'n_estimators':[100,200,300,400],
'random_state':[1]}
extra_tree_Grid = GridSearchCV(et, param_grid, cv = 5, scoring = "f1",
refit = True, n_jobs=2, verbose = 5)
extra_tree_Grid.fit(X_train_new, y_train_new.ravel())
Chinny84建议我查看" make_scorer"功能,我玩了一下这一点,但如果我刚刚使用" f1"我会得到相同的输出。或者"召回"已存在的GridSearchCV评分参数。
或者,我收到错误。这是我想要的一个例子(实际上没有编码)
from sklearn.metrics import f1_score, recall_score, make_scorer
def custom_recall(y_true, y_pred):
'filter for class 1 for both y_true and y_pred'
'target_accuracy = (y_pred Class 1 & are Class 1) / y_true Class 1'
return target_accuracy
my_scorer = make_scorer(custom_recall)
我认为我可以从指标中提取特定类别"召回"存在,在这种情况下,我想要拉出那些1级的,但我在如何设置这一点时变得非常迷失。
答案 0 :(得分:1)
虽然sklearn图书馆中可能存在评分功能,但您可以自己创建自己的得分手(假设您的基本模型允许这样的功能)。
从sklearn看看这个方法 - make_scorer。