ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – 以安全和正确的方式使用RandomForestClassifier的predict_proba()函数

2019-10-04 19:57:33  阅读:219  来源: 互联网

标签:random-forest python scikit-learn machine-learning


我正在使用Scikit学习在我的数据集上应用机器学习算法.有时我需要设置标签/类本身的标签/类的概率.我没有将垃圾邮件/非垃圾邮件作为电子邮件的标签,而是希望仅举例:0.78概率给定的电子邮件是垃圾邮件.

出于这个目的,我使用带有RandomForestClassifier的predict_proba()如下:

clf = RandomForestClassifier(n_estimators=10, max_depth=None,
    min_samples_split=1, random_state=0)
scores = cross_val_score(clf, X, y)
print(scores.mean())

classifier = clf.fit(X,y)
predictions = classifier.predict_proba(Xtest)
print(predictions)

我得到了这些结果:

 [ 0.4  0.6]
 [ 0.1  0.9]
 [ 0.2  0.8]
 [ 0.7  0.3]
 [ 0.3  0.7]
 [ 0.3  0.7]
 [ 0.7  0.3]
 [ 0.4  0.6]

第二列用于课程:垃圾邮件.但是,我对结果有两个主要问题,我对此并不自信.第一个问题是结果表示标签的概率而不受数据大小的影响?第二个问题是结果只显示一个数字,在0.701概率与0.708非常不同的某些情况下不是非常具体.有没有办法获得下一个5位数的例子?

非常感谢您花时间阅读这两个问题及其问题.

解决方法:

>我的结果中有多个数字,您确定它不是由于您的数据集吗? (例如,使用非常小的数据集将产生简单的决策树,因此产生“简单”的概率).否则,它可能只是显示一位数的显示,但尝试打印预测[0,0].
>我不确定你的意思是“概率不受我数据大小的影响”.如果你担心的是你不想预测,例如,太多的垃圾邮件,通常做的是使用阈值t,如果proba(标签== 1)>,你预测1.吨.这样,您可以使用阈值来平衡预测,例如限制垃圾邮件的全局概率.如果您想全局分析模型,我们通常会计算接收器操作特性(ROC)曲线的曲线下面积(AUC)(参见维基百科文章here).基本上,ROC曲线是根据阈值t对预测的描述.

希望能帮助到你!

标签:random-forest,python,scikit-learn,machine-learning
来源: https://codeday.me/bug/20191004/1854216.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有