2015-05-05 13 views
5

TLDR: scikit'in roc_curve işlevi yalnızca belirli bir veri kümesi için 3 puan döndürüyor. Neden böyle olabilir ve kaç puan geri döneceğimizi nasıl kontrol ederiz?Scikit'te bir ROC eğrisinin çizilmesi sadece 3 puan verir

ROC eğrisi çizmeye çalışıyorum ama sürekli olarak "ROC üçgeni" elde ediyorum.

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) 

Sadece uzunlukları Tamam olduğundan emin olmak için:

print len(y) 
print len(probas_[:, 1]) 

hem 13.759 döndürür.

sonra çalışan:

false_pos_rate, true_pos_rate, thresholds = roc_curve(y, probas_[:, 1]) 
print false_pos_rate 

döner [0 0,28240129 1.]

I threasholds çağrı, ben dizi ([0,4822225, -,5177775, -,84595197]) (her zaman sadece 3 puan).

Bu nedenle ROC eğimimin bir üçgen gibi görünmesi sürpriz değil.

Neyi anlayamadığım neden scikit's roc_curve yalnızca 3 puan döndürüyor. Kesinlikle takdir edilmesine yardımcı olun.

enter image description here

+0

"probas _ [:, 1]' içindeki değerleri kontrol ettiniz mi? 13759 uzunluğuna sahip olmasına rağmen, sadece 3 değer içerebilir ... – pyan

+0

Yardımlarınız için teşekkür ederim, [print pd.Series (probas _ [:, 1]). Unique()] 've gerçekten sadece 2 uniques ('[-0.84595197 -0.5177775]') –

+1

'a iade edildi. İsterseniz cevabı kabul edin. – pyan

cevap

5

noktalarının sayısı giriş benzersiz değerlerin sayısına bağlıdır. Giriş vektörünün sadece 2 benzersiz değeri olduğundan, fonksiyon doğru çıktı verir.

İlgili konular