gpt4 book ai didi

python - ROC 曲线上 SVM 位置的默认选择

转载 作者:行者123 更新时间:2023-11-30 09:01:24 26 4
gpt4 key购买 nike

我有一个问题,关于默认设置下 sklearn SVM 分类器将位于 ROC 曲线上的位置,或者如果失败,如何找出答案。我一直假设 ROC 曲线是对一般性能的描述,因此尝试找到分类器的确切位置对我来说是新鲜事。

假设 ROC 曲线看起来像提供的图表上的平均值 here .

假设您在默认设置下在整个数据集上训练 SVM,它将位于 ROC 曲线上的什么位置

编辑:澄清

假设我以默认值(sklearn)训练 SVM,我如何确定它在 ROC 曲线上的位置。或者,SVC 类上的哪个设置允许我设置 ROC 位置?

最佳答案

我认为您误解了 ROC 的概念。模型并不“位于 ROC 上”,模型具有 ROC 曲线。这可用于评估您的模型,或决定如何使用您的模型。

评估模型的性能

要计算模型的 ROC,请使用 roc_curve 函数,输入作为模型的预测概率,以及实际结果:

from sklearn.metrics import roc_curve
roc = roc_curve(model.predict_proba(X), y)

如果您想对模型的性能进行单一衡量,可以使用ROC下的区域;如果您尝试调整模型的超参数、优化特征选择等,这可能很有用。在 sklearn 中计算此值(使用 k 折交叉验证)的典型方法是:

from sklearn.cross_validation import cross_val_score
cross_val_score(model, X, y, scoring = 'roc_auc')

使用您的模型进行预测。

如果您只调用 model.predict(X),模型将根据概率阈值 0.5 进行预测。这可能不是您想要的:正如 @AndreHolzner 在对您的问题的评论中指出的那样,您需要使用 ROC 曲线来决定您愿意接受的误报率。之后,您只需检查您的预测概率是否高于此阈值:

thresh = 0.8
predictions = model.predict_proba(X) > thresh

关于python - ROC 曲线上 SVM 位置的默认选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33527219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com