Как использовать встроенные функции гранатаPython

Программы на Python
Ответить
Anonymous
 Как использовать встроенные функции граната

Сообщение Anonymous »

Я тестирую код из курса искусственного интеллекта CS50, включающий использование граната (вероятностная модель). Это код, который я запустил:

Код: Выделить всё

from pomegranate import *

class Node():
def __init__(self, distribution, name):
self.distribution = distribution
self.name = name

# Rain node has no parents
rain = Node(DiscreteDistribution({
"none": 0.7,
"light": 0.2,
"heavy": 0.1
}), name="rain")

# Track maintenance node is conditional on rain
maintenance = Node(ConditionalProbabilityTable([
["none", "yes", 0.4],
["none", "no", 0.6],
["light", "yes", 0.2],
["light", "no", 0.8],
["heavy", "yes", 0.1],
["heavy", "no", 0.9]
], [rain.distribution]), name="maintenance")

# Train node is conditional on rain and maintenance
train = Node(ConditionalProbabilityTable([
["none", "yes", "on time", 0.8],
["none", "yes", "delayed", 0.2],
["none", "no", "on time", 0.9],
["none", "no", "delayed", 0.1],
["light", "yes", "on time", 0.6],
["light", "yes", "delayed", 0.4],
["light", "no", "on time", 0.7],
["light", "no", "delayed", 0.3],
["heavy", "yes", "on time", 0.4],
["heavy", "yes", "delayed", 0.6],
["heavy", "no", "on time", 0.5],
["heavy", "no", "delayed", 0.5],
], [rain.distribution, maintenance.distribution]), name="train")

# Appointment node is conditional on train
appointment = Node(ConditionalProbabilityTable([
["on time", "attend", 0.9],
["on time", "miss", 0.1],
["delayed", "attend", 0.6],
["delayed", "miss", 0.4]
], [train.distribution]), name="appointment")

# Create a Bayesian Network and add states
model = BayesianNetwork()
model.add_states(rain, maintenance, train, appointment)

# Add edges connecting nodes
model.add_edge(rain, maintenance)
model.add_edge(rain, train)
model.add_edge(maintenance, train)
model.add_edge(train, appointment)

# Finalize model
model.bake()

Что я пробовал:
  • pip install pomegranate
  • Обновил pip до последняя версия
Чего я ожидаю:
  • Умение плавно запускать код
Что получилось:
  • rain = Node(DiscreteDistribution({
    ^^^^^^^^^^^^^^^^^^^^
    NameError: имя 'DiscreteDistribution' не определено< /li>
Хотя DiscreteDistribution была заявлена ​​как одна из функций на официальном сайте pomegranate
То же самое относится и к ConditionalProbabilityTable, и Байесовская сеть

Подробнее здесь: https://stackoverflow.com/questions/781 ... -functions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»