Accuray与交叉验证

时间:2018-11-06 23:22:24

标签: python classification cross-validation evaluation

我使用python中的Xboost对数字数据集进行了二进制分类。

model = XGBClassifier(max_depth=6,n_estimators=50)
fitted_model = model.fit(train_x, train_y)

当我向ACC请求二进制预测(fitted_model.score(train_x,train_y))时,我得到了0.701。

在测试过程中,我使用了10个CrossValidation,其显示的ACC为0.69

kfold = KFold(n_splits=10, random_state=seed)
cv_preds = cross_val_predict(fitted_model, test_x, test_y, cv=kfold)
metrics.accuracy_score(test_y, cv_preds)

作为最后一步,我用CV测试了 predict_proba ,它提供了比后两种方法更多的ACC。 我使用了scikit学习的示例(具有交叉验证的接收器工作特性(ROC))

cv = StratifiedKFold(n_splits=6)
.......
for train, test in cv.split(X, y):
       probas_ = fitted_model.predict_proba(X[test])
       fpr, tpr, thresholds = roc_curve(y[test], probas_[:, 1])
       tprs[-1][0] = 0.0
       roc_auc = auc(fpr, tpr)
       ........

我的问题是:

与培训相比,我如何获得更好的模型测试结果?这是因为我使用了PREDICT_PROBA而不是PREDICT吗?这是错误的结果,还是可以将其用于评估?

enter image description here

0 个答案:

没有答案