import numpy as np import pandas as pd ## 定义朴素贝叶斯模型训练过程 def nb_fit(X, y): # 样本数据 X_data = '1,绿,脆,清,是\n\ 2,不绿,不脆,不清,不是\n\ 3,绿,脆,不清,是\n\ 4,绿,不脆,清,是\n\ 5,不绿,不脆,清,不是' X_data.columns = ['颜色', '脆度', '清度'] X_data = X_data.set_index('id') # 标签数据 y_data = pd.read_csv(pd.compat.StringIO(y), sep=',', header=None) y_data.columns = ['label'] # 标签类别 classes = y_data['label'].unique() # 标签类别统计 class_count = y_data['label'].value_counts() # 极大似然估计:类先验概率 class_prior = class_count / len(y_data) # 类条件概率:字典初始化 prior_condition_prob = dict() # 遍历计算类条件概率 for col in X_data.columns: for j in classes: p_x_y = X_data[(y_data == j).values][col].value_counts() # 遍历计算类条件概率 for i in p_x_y.index: prior_condition_prob[(col, i, j)] = p_x_y[i] / class_count[j] return classes, class_prior, prior_condition_prob print(prior_condition_prob)报错显示输出未定义
时间: 2024-02-14 12:12:21 浏览: 114
这段代码中,prior_condition_prob 是在 nb_fit 函数中定义的一个字典,用于存储类条件概率。但是在 print(prior_condition_prob) 这一行代码中,prior_condition_prob 并没有被定义,所以会出现输出未定义的错误。如果想要正确输出 prior_condition_prob,需要在调用 nb_fit 函数之后再进行输出。例如:
```
X = ...
y = ...
classes, class_prior, prior_condition_prob = nb_fit(X, y) # 调用 nb_fit 函数
print(prior_condition_prob) # 输出 prior_condition_prob
```
阅读全文