Anonymous
Как использовать встроенные функции граната
Сообщение
Anonymous » 18 янв 2025, 12:34
Я тестирую код из курса искусственного интеллекта 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
1737192852
Anonymous
Я тестирую код из курса искусственного интеллекта CS50, включающий использование граната (вероятностная модель). Это код, который я запустил: [code]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() [/code] Что я пробовал: [list] [*]pip install pomegranate [*]Обновил pip до последняя версия [/list] Чего я ожидаю: [list] [*]Умение плавно запускать код [/list] Что получилось: [list] rain = Node(DiscreteDistribution({ ^^^^^^^^^^^^^^^^^^^^ NameError: имя 'DiscreteDistribution' не определено< /li> [/list] Хотя DiscreteDistribution была заявлена как одна из функций на официальном сайте pomegranate То же самое относится и к ConditionalProbabilityTable, и Байесовская сеть Подробнее здесь: [url]https://stackoverflow.com/questions/78167360/how-do-i-use-pomegranate-in-built-functions[/url]