KeyError при извлечении марковского бланкета с использованием алгоритма ПК на PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 KeyError при извлечении марковского бланкета с использованием алгоритма ПК на Python

Сообщение Anonymous »

Я пытаюсь выполнить выбор объектов с использованием Марковского бланкета и алгоритма ПК в наборе данных. Я выполнил следующие шаги:

[*]Загрузил набор данных и применил алгоритм ПК для создания DAG.
[*]Написал функцию для извлечения марковского бланкета целевой переменной из группы обеспечения доступности баз данных.
[*]Я получаю ошибку KeyError при попытке получить марковский бланкет для определенного узла

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

import numpy as np
import pandas as pd
from causallearn.search.ConstraintBased.PC import pc
from causallearn.utils.GraphUtils import GraphUtils
import matplotlib.pyplot as plt

# Step 1: Load the dataset
url = 'https://path-to-your-dataset.csv'
data = pd.read_csv(url)`

# Step 2: Drop missing values if necessary
data = data.dropna()

# Step 3: Convert to NumPy format
data_np = data.to_numpy()

# Step 4: Apply the PC Algorithm
pc_output = pc(data_np, alpha=0.05)

# Step 5: Define function to find Markov Blanket
def get_markov_blanket(graph, target_var_index):
parents = graph.get_parents(target_var_index)
children = graph.get_children(target_var_index)
spouses = []

for child in children:
spouses.extend(graph.get_parents(child))

markov_blanket = set(parents + children + spouses)
markov_blanket.discard(target_var_index)  # Remove the target variable from the Markov Blanket
return markov_blanket

# Set target variable index (e.g., X13)
target_var_name = 'X13'
target_var_index = 12  # assuming X13 corresponds to index 12

# Step 6: Get the Markov Blanket for the target variable
markov_blanket = get_markov_blanket(pc_output.G, target_var_index)
print(f"Markov Blanket of {target_var_name}: {markov_blanket}")

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

Error:
KeyError: 12
Ошибка возникает, когда я пытаюсь запустить следующую строку:

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

parents = graph.get_parents(target_var_index)
Я дважды проверил наличие узла в графе, но не знаю, почему возникает эта ошибка. Группа обеспечения доступности баз данных создается правильно, но проблема возникает при получении родительских или дочерних элементов целевой переменной.
Моя настройка:
  • Python: 3.9
  • Библиотеки: causallearn, networkx, pydot, pgmpy
Что я пробовал :
  • Проверил, существует ли целевая переменная (X13) в графе — есть.
  • Пересобрал DAG с помощью разные алгоритмы, но столкнулись с одной и той же проблемой.
  • Убедились, что все библиотеки обновлены.
Любая информация о том, почему эта ошибка KeyError или то, как я могу правильно получить одеяло Маркова, буду очень признателен!

Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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