5
TLDR:scikit的roc_curve
函數僅返回某個數據集的3個點。 爲什麼會這樣呢,我們如何控制要返回的點數?在scikit中繪製ROC曲線只會得到3分
我試圖繪製ROC曲線,但始終得到一個「ROC三角形」。
lr = LogisticRegression(multi_class = 'multinomial', solver = 'newton-cg')
y = data['target'].values
X = data[['feature']].values
model = lr.fit(X,y)
# get probabilities for clf
probas_ = model.predict_log_proba(X)
只是爲了確保長度都OK:
print len(y)
print len(probas_[:, 1])
返回13759兩個。
然後運行:
false_pos_rate, true_pos_rate, thresholds = roc_curve(y, probas_[:, 1])
print false_pos_rate
返回[0 0.28240129 1]
如果我請threasholds,我得到陣列([0.4822225,-0.5177775,-0.84595197])(總是隻有3分)。
因此,我的ROC曲線看起來像一個三角形就不足爲奇了。
我不明白的是爲什麼scikit的roc_curve
只返回3分。非常感謝。
您是否檢查過'probas _ [:, 1]'中的值?雖然它的長度爲13759,但它可能只包含3個值... – pyan
感謝您的幫助,我做了'[print pd.Series(probas _ [:,1])。unique()]',實際上只有2獨一無二('[-0.84595197 -0.5177775]')被退回 –
很高興它有幫助。如果你喜歡,請接受答案。 – pyan