Score d'exactitude: ValueError: Impossible de gérer le mélange binaire et continu
Je suis en utilisant linear_model.LinearRegression de scikit-learn comme un modèle prédictif. Ça marche et c'est parfait. J'ai un problème pour en évaluer les résultats prédits à l'aide de la accuracy_score métrique.
C'est mon vrai de Données :
array([1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0])
Et c'est mon prédictive des Données :
array([ 0.07094605, 0.1994941 , 0.19270157, 0.13379635, 0.04654469,
0.09212494, 0.19952108, 0.12884365, 0.15685076, -0.01274453,
0.32167554, 0.32167554, -0.10023553, 0.09819648, -0.06755516,
0.25390082, 0.17248324])
Mon code :
accuracy_score(y_true, y_pred, normalize=False)
Et c'est le message d'erreur :
"ValueError: ne Peut pas gérer mélange binaire et continu"
Aider ? Merci.
source d'informationauteur DataAddicted
Vous devez vous connecter pour publier un commentaire.
si vous préférez avoir plus de contrôle sur le seuil de l'utilisation
(y_pred>threshold).astype(int)
au lieu dey_pred.round()
oùthreshold
est votre valeur à séparer les deux classes.Peut-être que cela aide quelqu'un qui trouve cette question:
Comme JohnnyQ déjà souligné, le problème, c'est que vous avez non binaire (pas 0 ni 1) les valeurs de votre
y_pred
j'. e. lors de l'ajout d'vous verrez
True
dans la sortie. (La commande détecte s'il y a une valeur qui n'est pas 0 ou 1).Vous pouvez voir votre non-valeurs binaires à l'aide de:
Une instruction print peut sortie ci-dessus dérivés variables.
Enfin, cette fonction permet de nettoyer vos données de tous les non-binaires entrées:
La sklearn.métriques.accuracy_score(y_true, y_pred) méthode définit y_pred:
y_pred : 1d semblable au tableau, ou de l'étiquette de l'indicateur de tableau /sparse matrix. Prédit étiquettesrenvoyé par un classificateur.
Qui signifie y_pred doit être un tableau de 1 ou de 0 (fondée étiquettes). Ils ne devraient pas être probabilités.
L'fondée étiquettes (1 et 0) et/ou prévus de probabilites peuvent être générés à l'aide de la LinearRegression() du modèle, les méthodes de prédire() et predict_proba() respectivement.
1. Générer prédit étiquettes:
y_preds=LR.predict(X_test)
print(y_preds)
>> [1 1 0 1]
'y_preds" peut maintenant être utilisé pour la accuracy_score() la méthode:
accuracy_score(y_true,y_pred)
2. Générer des probabilités pour les étiquettes:
Certains indicateurs tels que "precision_recall_curve(y_true, probas_pred) exigent" la probablities, qui peut être généré comme suit:
LR = linear_model.LinearRegression()
y_preds=LR.predict_proba(X_test)
print(y_preds)
>> [0.87812372 0.77490434 0.30319547 0.84999743]
Le problème est que le vrai y est binaire (zéros et de uns), tandis que vos prévisions ne sont pas. Vous avez probablement généré des probabilités et non des prédictions, d'où le résultat 🙂
Essayez plutôt de générer de l'appartenance à une catégorie, et cela devrait fonctionner!
accuracy_score est une classification métrique, vous ne pouvez pas l'utiliser pour un problème de régression.
Vous pouvez voir la disposition de régression métriques ici