我正在使用sklearn包中的LogisticRegression,并且有一个关于分类的快速问题.我为我的分类器建立了一条ROC曲线,结果证明我的训练数据的最佳阈值大约为0.25.我假设创建预测时的默认阈值是0.5.如何进行10倍交叉验证时,如何更改此默认设置以了解模型的准确度?基本上,我希望我的模型能够为大于0.25但不是0.5的任何人预测“1”.我一直在查看所有文档,我似乎无法到达任何地方.
在此先感谢您的帮助.
解决方法:
这不是内置功能.您可以通过在自己的类中包装LogisticRegression类并添加在自定义predict()方法中使用的阈值属性来“添加”它.
但是,一些警告:
>默认阈值实际为0. LogisticRegression.decision_function()返回与所选分离超平面的有符号距离.如果您正在查看predict_proba(),那么您正在查看超平面距离的logit(),阈值为0.5.但是计算成本更高.
>通过选择这样的“最佳”阈值,您正在利用信息后学习,这会破坏您的测试集(即,您的测试或验证集不再提供对样本外错误的无偏估计).因此,除非您仅在训练集上的交叉验证循环内选择阈值,否则可能会引起额外的过度拟合,然后将其与训练分类器一起使用您的测试集.
>如果您遇到不平衡问题而不是手动设置阈值,请考虑使用class_weight.这应该迫使分类器选择远离严重感兴趣类的超平面.
标签:python,scikit-learn,regression,classification
来源: https://codeday.me/bug/20191006/1860259.html