小编use*_*811的帖子

sklearn svm 区域在 ROC 下小于 0.5 的训练数据

我正在使用 sklearn v 0.13.1 svm 来尝试解决二进制分类问题。我使用 kfold 交叉验证并计算 roc 曲线下的面积 (roc_auc) 来测试我的模型的质量。然而,对于某些折叠,roc_auc 小于 0.5,即使对于训练数据也是如此。那应该是不可能的吧?算法不应该总是有可能在它正在训练的数据上至少达到 0.5 吗?

这是我的代码:

classifier = svm.SVC(kernel='poly', degree=3, probability=True, max_iter=100000)
kf = cross_validation.KFold(len(myData), n_folds=3, indices=False)
for train, test in kf:
    Fit = classifier.fit(myData[train], classVector[train])

    probas_ = Fit.predict_proba(myData[test])
    fpr, tpr, thresholds = roc_curve(classVector[test], probas_[:,1])
    roc_auc = auc(fpr, tpr)

    probas_ = Fit.predict_proba(myData[train])
    fpr2, tpr2, thresholds2 = roc_curve(classVector[train], probas_[:,1])
    roc_auc2 = auc(fpr2, tpr2)

    print "Training auc: ", roc_auc2, " Testing auc: ", roc_auc
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

    Training auc: 0.423920939062  Testing auc: 0.388436883629 …
Run Code Online (Sandbox Code Playgroud)

python svm roc scikit-learn

5
推荐指数
1
解决办法
5572
查看次数

标签 统计

python ×1

roc ×1

scikit-learn ×1

svm ×1