【问题标题】:Plot ROC curve using scikit-learn for face recognition using image datasets causes error.( fetch_olivetti_faces)使用 scikit-learn 绘制 ROC 曲线以使用图像数据集进行人脸识别会导致错误。(fetch_olivetti_faces)
【发布时间】:2017-05-20 02:57:57
【问题描述】:

我对机器学习很陌生。任何帮助将不胜感激。

我想绘制图表来显示算法(LDA、SVM)的准确性和错误率。并比较两者中哪种算法更好。在终端中运行python程序返回的准确率不能作为很好的证明。

使用混淆矩阵绘制图表以显示准确性和错误率。

我相信使用 ROC 绘图是用于二元分类器(),它也可以用于使用 LDA 和 SVM 算法的图像数据集。

我已经绘制了图表 cross_val_predict 来可视化预测错误。

有没有比上面提到的更好的图形表示,或者我错过了。

【问题讨论】:

    标签: python matplotlib machine-learning scikit-learn face-recognition


    【解决方案1】:

    通常我这样绘制 ROC 曲线:

    predictions_prob = your_model.predict_proba(x_test)
    false_positive_rate, recall, thresholds = roc_curve(y_test, predictions_prob[:,1])
    roc_auc = auc(false_positive_rate, recall)
    plt.plot(false_positive_rate, recall, 'g', label = 'AUC %s = %0.2f' % ('model name', roc_auc))
    plt.plot([0,1], [0,1], 'r--')
    plt.legend(loc = 'lower right')
    plt.ylabel('Recall')
    plt.xlabel('Fall-out')
    plt.title('ROC Curve')
    

    【讨论】:

    • 感谢代码。执行代码时出现错误。我认为错误是由于图像数据类型不是二进制它的numpy数组。我目前正在使用 label_binarize 将图像数据转换为二进制。错误是,第 314 行,在 _binary_clf_curve raise ValueError("Data is not binary and pos_label is not specified") ValueError: Data is not binary and pos_label is not specified ajay@ubuntu:~/face_recog_LDA/ROC_Curve/roc$
    • 是否可以为包含 40 个主题和每个主题 10 个图像的图像数据集绘制 ROC 曲线? ROC曲线是否只用于二元问题?
    • @AJAY JOY 是的,它主要用于二元分类器,但它可以扩展到多类问题。看看scikit-learn.org/stable/auto_examples/model_selection/…
    猜你喜欢
    • 2016-08-24
    • 1970-01-01
    • 2015-04-08
    • 2015-06-23
    • 2011-05-09
    • 2017-03-11
    • 2020-04-11
    • 1970-01-01
    • 2018-07-30
    相关资源
    最近更新 更多