Théorème de bayes sur Python
Fermé
Maxensuel
-
Modifié le 21 janv. 2022 à 22:48
mamiemando Messages postés 33535 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 12 février 2025 - 21 janv. 2022 à 23:09
mamiemando Messages postés 33535 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 12 février 2025 - 21 janv. 2022 à 23:09
A voir également:
- Théorème de bayes sur Python
- Citizen code python avis - Accueil - Outils
- Trouver la position d'un élément dans une liste python ✓ - Forum Python
- Python retour à la ligne dans le code - Forum Python
- Python generator - Télécharger - Sécurité
1 réponse
mamiemando
Messages postés
33535
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 février 2025
7 828
Modifié le 21 janv. 2022 à 23:19
Modifié le 21 janv. 2022 à 23:19
Bonjour,
Merci d'utiliser les [balises de code] dans tes prochains messages.
Réponse rapide
Partie maths
D'après cette page, la formule de Bayes est :
... donc si on se ramène aux probabilités que tu demandes dans ton script, on transforme juste la formule par symétrie :
Tu as donc déjà toutes ces probabilités pour faire ton calcul. Dans ton programme, j'ai l'impression que pour ton calcul tu t'es inspiré de cette page mais la formule utilisée est :
... et donc :
Partie python
Bref, par rapport aux probabilités que tu demandes, tu peux directement appliquer la formule de Bayes. Et plutôt que de nommer tes variables
Programme final
Exemple : Si on reproduit cet exemple, P(A) vaut d'après la fin du calcul 0.19 + 0.045 = 0.235. On a maintenant les valeurs demandées par ton programme :
Bonne chance
Merci d'utiliser les [balises de code] dans tes prochains messages.
Réponse rapide
- Ton erreur vient du
print
(il manque une virgule devant le"%"
) - D'un point de vue maths, le calcul me paraît étrange, mais ça n'est pas ma spécialité.
Partie maths
D'après cette page, la formule de Bayes est :
P(A|B) = P(B|A) * P(A) / P(B)
... donc si on se ramène aux probabilités que tu demandes dans ton script, on transforme juste la formule par symétrie :
P(B|A) = P(A|B) * P(B) / P(A)
Tu as donc déjà toutes ces probabilités pour faire ton calcul. Dans ton programme, j'ai l'impression que pour ton calcul tu t'es inspiré de cette page mais la formule utilisée est :
P(B|A) = [P(A|B) * P(A)] / [P(A|B) * P(A) + P(A|!B) * P(B)]
... et donc :
- ce que tu appelles
a
estP(A|B)
; - ce que tu appelles
b
estP(A)
; - ce que tu appelles
d
pourrait correspondre àP(A|!B) * P(B)
, mais dans ton programme c'estP(A|B) * P(B) / P(A)
et donc ça voudrait dire queP(A|!B) = P(A|B) / P(A)
...
Partie python
Bref, par rapport aux probabilités que tu demandes, tu peux directement appliquer la formule de Bayes. Et plutôt que de nommer tes variables
a, b, c, d, e,on peut leur donner des noms plus parlants. Enfin, je te recommande les f-strings pour écrire tes chaînes ce sera peut être plus simple (entre accolade, tu peux récupérer le retour d'un code python, en particulier la valeur d'une variable).
Programme final
#!/usr/bin/env python3 # -*- coding: utf-8 -*- print("theoreme de bayes") p_a_b = float(input("P(A/B) = ")) p_b = float(input("P(B) = ")) p_a = float(input("P(A) = ")) # P(B|A) = P(A|B) * P(B) / P(A) p_b_a = p_a_b * p_b / p_a print(f"P(B/A) = {round(p_b_a, 3)}") print(f"{round(p_b_a * 100, 1)}%")
Exemple : Si on reproduit cet exemple, P(A) vaut d'après la fin du calcul 0.19 + 0.045 = 0.235. On a maintenant les valeurs demandées par ton programme :
theoreme de bayes
P(A/B) = 0.9
P(B) = 0.05
P(A) = 0.235
P(B/A) = 0.191
19.1%
Bonne chance