在 scikit-learn 中控制 LDA 和 QDA 的后验概率阈值

Pet*_*ppi 3 scikit-learn

考虑以下用例(这完全来自 James 等人的统计学习简介)。

您试图根据各种个人数据预测信用卡所有者是否会违约。您正在使用线性判别分析(或者,就本问题而言,二次判别分析)。

您希望估算器优先考虑真阳性率而不是假阳性率。也就是说,正确识别即将发生的违约比预测未能实现的违约更重要。

在 sklearn.lda.LDA 和/或 sklearn.qda.QDA 类中是否有设置?我认为也许用 class_prior 命名参数构建它们是合适的,但这似乎不被接受。

And*_*ler 7

您可以使用 lda.predict_proba 更改决策阈值,然后手动设置概率阈值:

lda = LDA().fit(X_train, y_train)
probs_positive_class = lda.predict_proba(X_test)[:, 1]
# say default is the positive class and we want to make few false positives
prediction = probs_positive_class > .9
Run Code Online (Sandbox Code Playgroud)

这会给你一个非常保守的估计他们是否会违约(只有在 90% 确定时才会说他们违约)。0.9 是否实际上对应于 90% 的确定性取决于分类器的校准程度。