Hallo,
Ich habe den Fehler im Betreff geschrieben, als ich versuche, das Tutorial von Bayes-Netzwerken auszuführen.
Die vollständige Fehlermeldung lautet wie folgt:
Datei "granatapfel/BayesianNetwork.pyx", Zeile 163, in Granatapfel.BayesianNetwork.BayesianNetwork.bake (granatapfel\BayesianNetwork.c:3710)
AttributeError: 'list'-Objekt hat kein Attribut 'distribution'
Der Code, den ich teste, ist derselbe wie für das Tutorial:
aus Granatapfelimport *
asia = DiscreteDistribution( { 'True' : 0.5, 'False' : 0.5 } )
tuberculosis = ConditionalProbabilityTable(
[[ 'Wahr', 'Wahr', 0.2 ],
[ 'Wahr', 'Falsch', 0.8 ],
[ 'Falsch', 'Wahr', 0,01 ],
[ 'Falsch', 'Falsch', 0.99 ]], [Asien])
Rauchen = DiscreteDistribution( { 'True' : 0.5, 'False' : 0.5 } )
lung = ConditionalProbabilityTable(
[[ 'Wahr', 'Wahr', 0,75 ],
[ 'Wahr', 'Falsch', 0.25 ],
[ 'Falsch', 'Wahr', 0.02 ],
[ 'Falsch', 'Falsch', 0,98 ]], [Rauchen] )
Bronchitis = ConditionalProbabilityTable(
[[ 'Wahr', 'Wahr', 0,92 ],
[ 'Wahr', 'Falsch', 0.08 ],
[ 'Falsch', 'Wahr', 0.03 ],
[ 'Falsch', 'Falsch', 0,97 ]], [Rauchen] )
tuberculosis_or_cancer = ConditionalProbabilityTable(
[[ 'Wahr', 'Wahr', 'Wahr', 1.0 ],
[ 'Wahr', 'Wahr', 'Falsch', 0.0 ],
[ 'Wahr', 'Falsch', 'Wahr', 1.0 ],
[ 'Wahr', 'Falsch', 'Falsch', 0.0 ],
[ 'Falsch', 'Wahr', 'Wahr', 1.0 ],
[ 'Falsch', 'Wahr', 'Falsch', 0.0 ],
[ 'Falsch', 'Falsch', 'Wahr', 0.0 ],
[ 'Falsch', 'Falsch', 'Falsch', 1.0 ]], [Tuberkulose, Lunge] )
xray = ConditionalProbabilityTable(
[[ 'Wahr', 'Wahr', 0.885 ],
[ 'Wahr', 'Falsch', 0.115 ],
[ 'Falsch', 'Wahr', 0.04 ],
[ 'Falsch', 'Falsch', 0,96 ]], [tuberculosis_or_cancer] )
Dyspnoe = ConditionalProbabilityTable(
[[ 'Wahr', 'Wahr', 'Wahr', 0,96 ],
[ 'Wahr', 'Wahr', 'Falsch', 0.04 ],
[ 'Wahr', 'Falsch', 'Wahr', 0.89 ],
[ 'Wahr', 'Falsch', 'Falsch', 0.11 ],
[ 'Falsch', 'Wahr', 'Wahr', 0,96 ],
[ 'Falsch', 'Wahr', 'Falsch', 0.04 ],
[ 'Falsch', 'Falsch', 'Wahr', 0.89 ],
[ 'Falsch', 'Falsch', 'Falsch', 0.11 ]], [Tuberkulose_oder_Krebs, Bronchitis])
s0 = State(asia, name="asia")
s1 = Zustand(tuberkulose, name="tuberkulose")
s2 = State(Raucher, name="Raucher")
network = BayesianNetwork( "asien" )
network.add_nodes([s0,s1,s2])
network.add_edge(s0,s1)
network.add_edge(s1,s2)
network.bake()
Danke im Voraus.
Wilhelm
Ich verwende Python 2.7 auf einem Windows-Rechner
Guter Fang. Anstelle von network.add_nodes([s0,s1,s2])
machen Sie es zu network.add_nodes(s0, s1, s2)
. Ich habe das kürzlich geändert, sodass es keine Liste mehr ist.
Danke, es hat funktioniert.
Hilfreichster Kommentar
Guter Fang. Anstelle von
network.add_nodes([s0,s1,s2])
machen Sie es zunetwork.add_nodes(s0, s1, s2)
. Ich habe das kürzlich geändert, sodass es keine Liste mehr ist.