knn算法python画图
时间: 2024-10-29 20:05:25 浏览: 35
K近邻(KNN)算法是一种基于实例的学习方法,它不需要训练模型,而是直接通过计算新样本与已知数据集中的点的距离来进行预测。在Python中,我们可以利用`matplotlib`库来可视化KNN的过程。下面是一个简单的步骤:
1. 首先,安装必要的库,如`numpy`, `pandas`, 和 `scikit-learn`,以及绘图库`matplotlib`和`seaborn`:
```bash
pip install numpy pandas scikit-learn matplotlib seaborn
```
2. 导入所需模块并生成一些示例数据:
```python
import numpy as np
from sklearn.datasets import make_classification
import matplotlib.pyplot as plt
import seaborn as sns
X, y = make_classification(n_samples=50, n_features=2, centers=4, random_state=42)
```
3. 使用` knearest_neighbors` 函数从`sklearn.neighbors` 中加载 KNN 分类器:
```python
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3) # 选择一个邻居数,例如3
knn.fit(X, y)
```
4. 创建一个新的点或一组点,并进行预测:
```python
new_points = np.array([[2, 2], [4, 4]]) # 新的数据点
predictions = knn.predict(new_points)
```
5. 绘制原始数据和决策边界,通常可以使用`scatter`函数展示每个类别的数据点,并通过颜色区分它们:
```python
colors = ['red', 'blue']
for i in range(2):
plt.scatter(X[y == i, 0], X[y == i, 1], color=colors[i])
# 绘制分类边界的虚线
plot_decision_boundary(knn, X, y)
plt.scatter(new_points[:, 0], new_points[:, 1], color='black', marker='x')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('KNN Classification')
plt.show()
```
这里`plot_decision_boundary`是一个辅助函数,用于绘制决策边界。如果你需要创建这个函数,可以参考以下代码示例:
```python
def plot_decision_boundary(model, X, y):
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02), np.arange(y_min, y_max, 0.02))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.8)
```
阅读全文