k近邻算法 sklearn实现并画出
时间: 2024-05-22 16:16:40 浏览: 13
k近邻算法是一种简单的机器学习算法,用于分类和回归问题。在本文中,我们将使用Python中的scikit-learn库实现k近邻算法,并绘制出分类结果的图表。
首先,我们需要导入所需的库:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn import neighbors, datasets
```
接下来,我们将使用Iris数据集进行演示。Iris数据集包含150个样本,每个样本有4个特征(花萼长度、花萼宽度、花瓣长度和花瓣宽度),分为3个类别(山鸢尾、变色鸢尾和维吉尼亚鸢尾)。
```python
# 加载数据集
iris = datasets.load_iris()
# 仅选择前两个特征作为示例进行可视化
X = iris.data[:, :2]
y = iris.target
```
接下来,我们将定义k值和网格的数量,以便在绘制分类边界时使用。
```python
# 定义k值和网格数量
n_neighbors = 15
h = .02
```
接下来,我们将创建分类器并拟合数据。
```python
# 创建k近邻分类器
clf = neighbors.KNeighborsClassifier(n_neighbors)
# 拟合数据
clf.fit(X, y)
```
现在,我们将创建网格,并为每个点预测类别。
```python
# 创建网格
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, h), np.arange(y_min, y_max, h))
# 预测类别
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
```
最后,我们将绘制分类边界和数据点。
```python
# 绘制分类边界
plt.figure()
plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Paired)
# 绘制数据点
plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', cmap=plt.cm.Paired)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.xticks(())
plt.yticks(())
plt.show()
```
运行完整代码后,我们将得到以下图表:
![knn_sklearn](https://cdn.jsdelivr.net/gh/kbp0413/images/knn_sklearn.png)
在图表中,每个点代表一个样本,颜色表示类别。分类边界由灰色区域表示。通过这个图表,我们可以清楚地看到k近邻算法如何将数据点分成不同的类别。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)