TLDR: la funzione di scikit restituisce solo 3 punti per un determinato set di dati. Perché potrebbe essere così, e come possiamo controllare quanti punti recuperare?Tracciare una curva ROC nei rendimenti di scikit solo 3 punti
Sto provando a disegnare una curva ROC, ma ottengo sempre un "triangolo 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)
Giusto per assicurarsi che le lunghezze sono ok:
print len(y)
print len(probas_[:, 1])
Restituisce 13.759 su entrambi.
poi eseguire:
false_pos_rate, true_pos_rate, thresholds = roc_curve(y, probas_[:, 1])
print false_pos_rate
ritorna [0. ,28,240129 millions 1.]
Se chiamo threasholds, ottengo array ([,4822,225 mila, -,5177775, -,84595197]) (sempre solo 3 punti).
Non è quindi una sorpresa che la mia curva ROC assomigli ad un triangolo.
Quello che non riesco a capire è perché lo roc_curve
di Scikit restituisce solo 3 punti. Aiuto estremamente apprezzato.
Hai controllato i valori in 'probas _ [:, 1]'? Sebbene abbia una lunghezza di 13759, può contenere solo 3 valori ... – pyan
Grazie per il tuo aiuto, ho fatto '[print pd.Series (probas _ [:, 1]). Unique()]', e in effetti solo 2 uniques ('[-0.84595197 -0.5177775]') sono stati restituiti –
Felice è d'aiuto. Si prega di accettare la risposta, se ti piace. – pyan