Pomegranate: network.bake()-Fehler: AttributeError: 'Listen'-Objekt hat kein Attribut 'Verteilung'

Erstellt am 21. Sept. 2016  ·  3Kommentare  ·  Quelle: jmschrei/pomegranate

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

Hilfreichster Kommentar

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.

Alle 3 Kommentare

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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen