- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试解决一个二元分类问题,其中 80% 的数据属于 x 类,20% 的数据属于 y 类。我所有的模型(AdaBoost、神经网络和 SVC)都只是预测所有数据都属于 x 类,因为这是它们可以达到的最高精度。
我的目标是为 x 类的所有条目实现更高的精度,我不关心有多少条目被错误地分类为 y 类的一部分。
我的想法是,当模型对它们非常确定时,将条目放在类 x 中,否则将它们放在类 y 中。
我将如何实现这一目标?有没有办法移动阈值,以便只有非常明显的条目被归类为 x 类?
我正在使用 python 和 sklearn
示例代码:
adaboost = AdaBoostClassifier(random_state=1)
adaboost.fit(X_train, y_train)
adaboost_prediction = adaboost.predict(X_test)
confusion_matrix(adaboost_prediction,y_test) outputs:
array([[ 0, 0],
[10845, 51591]])
最佳答案
使用 AdaBoostClassifier
,您可以输出类概率,然后使用 predict_proba
对它们进行阈值处理而不是预测
:
adaboost = AdaBoostClassifier(random_state=1)
adaboost.fit(X_train, y_train)
adaboost_probs = adaboost.predict_proba(X_test)
threshold = 0.8 # for example
thresholded_adaboost_prediction = adaboost_probs > threshold
使用这种方法,您还可以检查(仅调试打印,或者可能在图表上排序和绘制)置信度在测试数据的最终模型中有何变化,以帮助决定是否值得进一步研究。
虽然有不止一种方法可以解决您的问题。例如参见 Miriam Farber's answer它着眼于重新加权分类器以针对训练期间的 80/20 类不平衡进行调整。您可能会发现您还有其他问题,包括您正在使用的分类器可能无法在给定当前数据的情况下实际分离 x 和 y 类。像这样检查数据问题的所有可能性可能需要几种不同的方法。
如果您有更多关于数据问题的问题,而不是代码问题,Stack Exchange 网站和 Stack Overflow 可以为您提供帮助(请在发布前阅读网站指南) : Data Science和 Cross Validated .
关于python - 机器学习 : Move Treshhold,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45466508/
我正在尝试解决一个二元分类问题,其中 80% 的数据属于 x 类,20% 的数据属于 y 类。我所有的模型(AdaBoost、神经网络和 SVC)都只是预测所有数据都属于 x 类,因为这是它们可以达到
我是一名优秀的程序员,十分优秀!