利用西瓜数据集1.0,其中编号为1、2、3、6、7、10、14、15、16、17为测试集,其余为训练集;完成朴素贝叶斯决策实验,以散点图形式可视化训练模型以及测试结果。python编写
时间: 2023-07-10 20:31:25 浏览: 81
好的,以下是实现代码及解释:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
# 读取数据集
data = pd.read_csv('watermelon_3a.csv')
# 将测试集和训练集分开
test_data = data.loc[[1, 2, 3, 6, 7, 10, 14, 15, 16, 17], :]
train_data = data.loc[~data.index.isin(test_data.index), :]
# 分离特征和标签
train_X, train_y = train_data.iloc[:, :-1], train_data.iloc[:, -1]
test_X, test_y = test_data.iloc[:, :-1], test_data.iloc[:, -1]
# 构建朴素贝叶斯模型
clf = GaussianNB()
clf.fit(train_X, train_y)
# 可视化训练集
plt.figure()
plt.scatter(train_X.iloc[:, 0], train_X.iloc[:, 1], c=train_y, cmap='viridis')
plt.xlabel('密度')
plt.ylabel('含糖率')
plt.title('训练集')
plt.show()
# 可视化测试集
plt.figure()
plt.scatter(test_X.iloc[:, 0], test_X.iloc[:, 1], c=test_y, cmap='viridis')
plt.xlabel('密度')
plt.ylabel('含糖率')
plt.title('测试集')
plt.show()
# 预测测试集
y_pred = clf.predict(test_X)
# 计算准确率
accuracy = accuracy_score(test_y, y_pred)
print('准确率:', accuracy)
```
首先读入西瓜数据集,然后将测试集和训练集分开。这里使用pandas的`loc`函数来选择特定行,使用`~`符号来取反,即选择不在测试集中的行。然后,分离出特征和标签,使用`GaussianNB`类构建朴素贝叶斯模型,并用训练集进行拟合。
接下来,我们使用Matplotlib库进行可视化。首先,使用`scatter`函数将训练集和测试集的样本点显示出来。其中,`c`参数表示颜色,使用`viridis`颜色映射,使不同类别的样本点显示不同的颜色。然后,使用`xlabel`和`ylabel`函数设置坐标轴标签,使用`title`函数设置图表标题。最后,使用`show`函数显示图表。
最后,使用`predict`函数对测试集进行预测,并计算准确率。准确率可以使用`accuracy_score`函数来计算。
阅读全文
相关推荐











