python 对比贝叶斯和knn算法的预测结果可视化
时间: 2023-10-27 10:04:30 浏览: 101
首先,你需要导入必要的库和数据集进行预处理。这里以iris数据集为例:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
# 加载iris数据集
iris = load_iris()
X, y = iris.data, iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
```
接下来,我们可以使用贝叶斯和knn算法进行训练和预测:
```python
# 使用贝叶斯算法进行训练和预测
nb = GaussianNB()
nb.fit(X_train, y_train)
y_nb_pred = nb.predict(X_test)
# 使用knn算法进行训练和预测
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
y_knn_pred = knn.predict(X_test)
```
然后我们可以使用混淆矩阵和准确率评估两种算法的预测效果:
```python
# 计算贝叶斯和knn算法的准确率
nb_acc = accuracy_score(y_test, y_nb_pred)
knn_acc = accuracy_score(y_test, y_knn_pred)
# 绘制混淆矩阵
nb_cm = confusion_matrix(y_test, y_nb_pred)
knn_cm = confusion_matrix(y_test, y_knn_pred)
fig, axes = plt.subplots(1, 2, figsize=(10, 5))
axes[0].imshow(nb_cm, cmap=plt.cm.Blues)
axes[0].set_title(f'Naive Bayes\nAccuracy: {nb_acc:.2f}')
axes[0].set_xlabel('Predicted label')
axes[0].set_ylabel('True label')
axes[1].imshow(knn_cm, cmap=plt.cm.Blues)
axes[1].set_title(f'KNN\nAccuracy: {knn_acc:.2f}')
axes[1].set_xlabel('Predicted label')
axes[1].set_ylabel('True label')
plt.tight_layout()
plt.show()
```
最后,我们可以将预测结果可视化,以便更好地理解两种算法的预测效果。这里我们选择绘制前两个特征的散点图:
```python
# 绘制预测结果可视化
fig, axes = plt.subplots(1, 2, figsize=(10, 5))
# 贝叶斯算法可视化
axes[0].scatter(X_test[:, 0], X_test[:, 1], c=y_nb_pred)
axes[0].set_title(f'Naive Bayes\nAccuracy: {nb_acc:.2f}')
axes[0].set_xlabel('Feature 1')
axes[0].set_ylabel('Feature 2')
# KNN算法可视化
axes[1].scatter(X_test[:, 0], X_test[:, 1], c=y_knn_pred)
axes[1].set_title(f'KNN\nAccuracy: {knn_acc:.2f}')
axes[1].set_xlabel('Feature 1')
axes[1].set_ylabel('Feature 2')
plt.tight_layout()
plt.show()
```
这样就可以得到贝叶斯和knn算法的预测结果可视化了。你可以根据需要调整代码和参数以适应不同的数据集和场景。
阅读全文