import pandas as pd
import numpy as np
from pgmpy.estimators import ExhaustiveSearch, HillClimbSearch, BicScore
def build_structure(data):
df = pd.DataFrame(data)
est = HillClimbSearch(df, scoring_method=BicScore(df))
model = est.estimate()
DAG = np.zeros((data.shape[1], data.shape[1]), np.int64)
for edge in model.edges():
DAG[edge[0], edge[1]] = 1
np.save('prepare_data/DAG.npy', DAG)
return DAG
if __name__=='__main__':
data = np.load('prepare_data/data.npy')
build_structure(data)
pgmpy接口說明網站http://pgmpy.org/estimators.html
此處data爲numpy數據,每一行數據爲一個實例,每一列爲一個類別,之後輸出類別依賴關係