您可以自己制作任何得分器:
from sklearn.metrics import make_scorer
from sklearn.metrics import roc_curve, auc
def custom_auc(ground_truth, predictions):
fpr, tpr, _ = roc_curve(ground_truth, predictions[:, 1], pos_label=1)
return auc(fpr, tpr)
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
#ROC false_positive_rate, true_positive_rate, thresholds = roc_curve(labels_test, labels_predicted) roc_auc = auc(false_positive_rate, true_positive_rate) print roc_auc
但它显示的AUC比最佳得分要低。 - julianspaethroc_auc
。人们预计在测试集上会看到较低的分数。 - piman314