J'essaye de construire un modèle de régression logistique en python 3 en utilisant la bibliothèque sklearn.
Tenons-nous en aux versions courtes ci-dessous pour l'avenir,
dv - variable dépendante
idv - variable indépendante
J'ai maintenant idv1, idv2, idv3, idv4, idv5, idv6, idv7, idv8 et idv9.
Parmi lesquelles idv6 à idv9 sont des variables catégorielles (idv6 et idv7 ont 3 catégories..où comme idv8 et idv9 sont des variables booléennes..oui ou aucun type de variables [0 ou 1])
Et dv est à nouveau une variable booléenne (type de variable oui ou non).
Maintenant, j'ai créé un mannequin pour tous les idv6 à idv9 pour les données finales du modèle ... c'est-à-dire idv6_c1, idv6_c2, idv_c3 et suivi similaire pour le reste .. comme idv8_c1, idv8_c2 pour idv8 et idv9.
Maintenant, après avoir ajusté le modèle et trouvé les métriques des valeurs prédites ...
J'obtiens, disons, precision_score de 76.7415479670124% et precision_score de 76.7415479670124%
J'ai calculé à l'aide des bibliothèques sklearn.metrics.accuracy_score et sklearn.metrics.precision_score .
Je me demande ... est-ce correct ou est-ce que je manque quelque chose ... ??
Est-ce que cela peut arriver ?? ... l'exactitude et la précision doivent être égales à presque 13 décimales ??? .... Je suis sûr ... je fais quelque chose de mal ... quelqu'un peut-il m'aider? / p>
3 Réponses :
Précision = Vrai Positif / (Vrai Positif + Faux Positif)
Précision = (Vrai Positif + Vrai Négatif) / (Vrai Positif + Faux Positif + Vrai Négatif + Faux Négatif)
Par conséquent, s'il n'y a pas de prédictions négatives, ces deux valeurs seront égales.
La précision est définie comme la fraction des résultats récupérés qui sont pertinents, donnée par: (tp / tp + fp), tandis que la précision est le rapport entre les prédictions correctes et le nombre total d'échantillons d'entrée.
Bien que moins probable, mais il peut arriver que la précision soit égale à l'exactitude, lorsque le nombre de vrais négatifs et de faux négatifs est égal à zéro. Autrement dit, votre système ne classe aucun échantillon comme négatif.
Votre problème pourrait cependant être lié à la micro-moyenne comme mentionné ici .
Voici un lien pour résoudre le même résultat de score et des principes plus détaillés.
Il vous suffit de changer les paramètres de scikit-learn.
average = macro
ou average = weighted
Les codes et le résultat sont copiés à partir du lien ci-dessus. ( https://simonhessner.de/why-are-precision-recall-and-f1-score-equal-when-using-micro-averaging-in-a-multi-class-problem/ a>)
Références: https: //scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_score.html
Precision (micro): 0.444444 Recall (micro): 0.444444 F1 score (micro): 0.444444 Precision (macro): 0.366667 Recall (macro): 0.361111 F1 score (macro): 0.355556 Precision (weighted): 0.433333 Recall (weighted): 0.444444 F1 score (weighted): 0.429630
obtiendra ce résultat:
XXX