朴素贝叶斯-执行Python和RM:不同的AUC

lionelderkrikorlionelderkrikor 主持人,RapidMiner认证分析师,会员职位:1195年独角兽
2019年11月编辑 帮助

你好,

我继续用NB模型进行RM/Execute Python的实验。

对不起,但我觉得有必要向你呼吁:

mschmitz,即模型RM和执行Python的数值示例。

事实上,除了.....之外,我在两个模型中检索到严格相同的评分结果(准确率、加权平均召回率、加权平均精度、召回率(正类否/yes)、精度(正类否/yes))对于AUC

AUC (RM) = 0.942

AUC(Python) = 0.883

我想AUC是从ROC曲线计算出来的。

但它是如何计算的呢?如何解释这种差异?

过程如下:

<?xml version="1.0" encoding="UTF-8"?> <过程version = " 8.0.001”>
> <上下文
<输入/ >
<输出/ >
<宏/ >
> < /上下文

<过程扩展= " true " >


< /操作符>





<列出关键= " comparison_groups " / >
< /操作符>




< /操作符>





<列出关键= " comparison_groups " / >
< /操作符>





<列出关键= " comparison_groups " / >
< /操作符>


< /操作符>

<列出关键= " application_parameters " / >
< /操作符>





<列出关键= " class_weights " / >
< /操作符>





























> < /过程
< /操作符>
> < /过程

谢谢你,

最好的问候,

莱昂内尔

最佳答案

答案

  • Telcontar120Telcontar120 主持人,RapidMiner认证分析师,RapidMiner认证专家,会员职位:1635年独角兽

    这可能与处理关系的方式有关,因为在计算ROC/AUC时有多种选择,并不是所有软件都使用相同的方法。你要么必须深入了解python与RapidMiner中ROC/AUC计算的细节(通过github上的java代码),或者可能有一个开发人员会加入进来,因为他们已经知道答案了:-)

    布莱恩·T。
    Lindon合资企业
    乐鱼平台进入来自认证RapidMiner专家的数据科学咨询
    sgenzer lionelderkrikor
  • lionelderkrikorlionelderkrikor 主持人,RapidMiner认证分析师,会员职位:1195年独角兽

    @mschmitz

    这里有两个要素:

    1.概率校准:

    最近,在我比较Python/RM的实验中,我对

    NB_Calib = CalibratedClassifierCV(base_estimator = NB,method = 'sigmoid')

    的确,首先,Python中模型(SVM)计算出的置信度是异常的(对于预测类,对于二进制问题,置信度< 0.5 !!??? ?)经过调查,我发现这个python类似乎可以提高分类器置信度的相关性。因此,我建立了一个SVM模型(python/RM严格相同),并使用这个类在python中计算新的置信度:与RM不同。

    进一步说:

    http://scikit-learn.org/stable/modules/calibration.html

    为了确认,在NB模型下,在接下来的过程中,我也用Execute Python应用了上面的类:“Execute Python”中的置信度确实不同于RM的置信度。(训练样例集Chapter09DataSet_Training.csv(见附件)

    <?xml version="1.0" encoding="UTF-8"?> <过程version = " 8.0.001”>
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文

    <过程扩展= " true " >


    < /操作符>



    <列出关键= " set_additional_roles " / >
    < /操作符>



    <列出关键= " application_parameters " / >
    < /操作符>




    < /操作符>



    <列出关键= " set_additional_roles " / >
    < /操作符>



    < /操作符>


    < /操作符>


























    > < /过程
    < /操作符>
    > < /过程

    2.ROC曲线:

    与此同时,我用Python构建了ROC曲线,它很奇怪:

    Python只使用一个点来创建ROC。下面是这个ROC的截图:

    NB_ROC_Python.pngNB ROC蟒蛇曲线

    而RM使用更多的点:

    NB_ROC_RM.pngNB_ROC_RM曲线

    在这两种情况下考虑的点数是不一样的。RM比Python更准确,然后

    两条曲线的“形状”不同,曲线下面积也不同。对我来说,至少有一个“bug”

    Python中的简化/缺乏精度。

    最好的问候,

    莱昂内尔

    MartinLiebig
登录注册置评。