我使用网格搜索训练模型,然后使用其中的最佳参数来定义我选择的模型。
model = XGBClassifier()
pipeline = make_pipeline(model)
kfolds = StratifiedKFold(3)
clf = GridSearchCV(pipeline, parameters, cv=kfolds.split(x_train, y_train),
scoring='roc_auc', return_train_score=True)
clf.fit(x, y)
model = clf.best_estimator_
使用gridsearch中的这个模型,然后校准它并绘制未校准与校准的图。
y_test_uncalibrated = model.predict_proba(x_test)[:, 1]
fraction_of_positives, mean_predicted_value=calibration_curve(y_test,y_test_uncalibrated,n_bins=10)
plt.plot(mean_predicted_value, fraction_of_positives, 's-', label='Uncalibrated')
clf_isotonic = CalibratedClassifierCV(model, cv='prefit', method='isotonic')
clf_isotonic.fit(x_train, y_train)
y_test_iso = clf_isotonic.predict_proba(x_test)[:, 1]
fraction_of_positives, mean_predicted_value = calibration_curve(y_test, y_test_iso, n_bins=10)
plt.plot(mean_predicted_value, fraction_of_positives, 's-', color='red', label='Calibrated (Isotonic)')
我对上面的 platts 做同样的事情。但是我得到以下结果:
我不明白为什么现在等渗和普氏的分数减少了?我不觉得我的代码做错了什么。我犯了什么错误吗?