本文介绍了AUC 的网格搜索查找参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为我的 SVM 找到参数,这给我最好的 AUC.但是我在 sklearn 中找不到 AUC 的任何评分函数.有人有想法吗?这是我的代码:

I'm trying to find the parameters for my SVM, which give me the best AUC. But i can't find any scoring function for AUC in sklearn. Does someone have an idea? Here is my Code:

    parameters = {"C":[0.1, 1, 10, 100, 1000], "gamma":[0.1, 0.01, 0.001, 0.0001, 0.00001]}
    clf = SVC(kernel = "rbf")
    clf = GridSearchCV(clf, parameters, scoring = ???)
    svr.fit(features_train , labels_train)
    print svr.best_params_

那我可以用来做什么???获得高 AUC 分数的最佳参数?

So what can i use for ??? to get the best parameters for an high AUC score?

推荐答案

您可以自己制作任何评分器:

You can make any scorer by your own:

from sklearn.metrics import make_scorer
from sklearn.metrics import roc_curve, auc

# define scoring function
 def custom_auc(ground_truth, predictions):
     # I need only one column of predictions["0" and "1"]. You can get an error here
     # while trying to return both columns at once
     fpr, tpr, _ = roc_curve(ground_truth, predictions[:, 1], pos_label=1)
     return auc(fpr, tpr)

# to be standart sklearn's scorer
 my_auc = make_scorer(custom_auc, greater_is_better=True, needs_proba=True)

 pipeline = Pipeline(
                [("transformer", TruncatedSVD(n_components=70)),
                ("classifier", xgb.XGBClassifier(scale_pos_weight=1.0, learning_rate=0.1,
                                max_depth=5, n_estimators=50, min_child_weight=5))])

 parameters_grid = {'transformer__n_components': [60, 40, 20] }

 grid_cv = GridSearchCV(pipeline, parameters_grid, scoring = my_auc, n_jobs=-1,
                                                        cv = StratifiedShuffleSplit(n_splits=5,test_size=0.3,random_state = 0))
 grid_cv.fit(X, y)

有关更多信息,请查看此处:sklearn make_scorer

For more information, please check out here: sklearn make_scorer

这篇关于AUC 的网格搜索查找参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-01 08:01