生成一个可以在pycharm上可视化的用knn方法对数据集进行分类,数据集多一些,3种分类
时间: 2024-02-13 17:01:26 浏览: 95
好的,以下是一个使用knn方法对数据集进行分类并可视化的 Python 代码,你可以在 PyCharm 上运行它:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
# 生成数据集
np.random.seed(0)
X = np.random.randn(300, 2)
y = np.random.randint(0, 3, 300)
# 特征数量
n_features = 2
# 距离度量方式
p = 2 # 欧几里得距离
# 训练和测试数据集的划分比例
test_size = 0.2
# 划分训练和测试数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=test_size)
# 构建knn模型
k = 3
clf = KNeighborsClassifier(n_neighbors=k, p=p)
# 训练模型
clf.fit(X_train, y_train)
# 可视化数据集和分类结果
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
h = 0.02 # 步长
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)
plt.figure(figsize=(6, 6))
plt.contourf(xx, yy, Z, cmap=plt.cm.RdYlBu, alpha=0.5)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.RdYlBu, edgecolor='black')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title("KNN classification (k = %i)" % (k))
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.show()
```
这个例子使用了sklearn库中的KNeighborsClassifier类来构建knn模型,并使用train_test_split方法将数据集划分为训练集和测试集。在这个例子中,数据集中有2个特征,距离度量方式为欧几里得距离,并且数据集共有3个类别。你可以将X和y替换为你的数据集,并修改相关的参数来适应你的需求。
这段代码将数据集可视化为散点图,并用不同的颜色表示不同的分类。同时,它还在分类结果上绘制了等高线图,以显示模型的分类边界。你可以更改h的值来调整等高线图的精度。
阅读全文