2015-05-07 64 views
0

考慮下面的用例(這完全是從James等人的「介紹統計學習」入手)。在scikit-learn中控制LDA和QDA的後驗概率閾值

您試圖預測信用卡持有者是否會根據各種個人數據進行違約。您正在使用線性判別分析(或者,針對此問題的目的,二次判別分析)。

您希望您的估算師優先考慮假陽性率的真正陽性率。也就是說,正確識別即將發生的違約比預測未能實現的違約更重要。

在sklearn.lda.LDA和/或sklearn.qda.QDA類中是否有這樣的設置?我認爲用class_prior命名參數構建它們可能是合適的,但這似乎並不被接受。

回答

2

您可以通過使用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 

這會給你他們是否將默認一個非常保守的估計(它只會說它們默認如果它是90%確定的)。 .9實際上是否相當於90%確定取決於分類器的性能如何。

+0

我很高興看到一位sklearn大師權衡。非常感謝。這種解決方案正如我們應該的那樣打擊我。 API已經有足夠的信息用於這種分析,所以不需要專用參數。 –