import csv
from math import log
def read_data(filename):
'''
读数据,西瓜数据集3.0, 只取离散属性数据
:return: 返回离散数据集X 和标签集Y
'''
X, Y = [], []
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
for line in reader:
X.append(line[1:7])
Y.append(line[9])
return X, Y
def AODE(X, Y, num_feat=6):
'''
AODE模型训练,得出参数
:param X: 数据集,不包含标签,只取离散属性
:param Y: 标签集
:param num_feat: 数据集标签数默认为6
:return:返回概率P(c,xi)和P(xj|c,xi),分别以三层字典和五层字典形式表示
'''
num_total = len(X)
unique_labels = unique_list(Y)
num_class = len(unique_labels)
# 每种离散属性可以取值范围
attrs = []
for i in range(num_feat):
attr = []
for n in range(num_total):
if X[n][i] not in attr:
attr.append(X[n][i]
西瓜数 课后习题7.6 AODE 独依赖,半朴素贝叶斯分类器
最新推荐文章于 2024-05-14 22:40:59 发布