欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sklearn实战:使用knn算法进行分类及可视化

程序员文章站 2022-03-22 18:01:40
...
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets.samples_generator import make_blobs
# 生成数据
centers = [[-2, 2], [2, 2], [0, 4]]
X, y = make_blobs(n_samples=60, centers=centers, random_state=0, cluster_std=0.60)
# X #矩阵,二维数组
y #y是数据集的类别labe
array([1, 0, 0, 1, 0, 1, 1, 0, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1,
       2, 0, 0, 1, 2, 0, 0, 2, 2, 2, 1, 2, 1, 2, 2, 1, 0, 1, 1, 0, 1, 2,
       1, 1, 0, 1, 0, 2, 2, 1, 1, 2, 2, 0, 1, 2, 0, 1])
# 画出数据
plt.figure(figsize=(16,10), dpi=144)
c=np.array(centers)
plt.scatter(X[:, 0], X[:, 1], c=y,s=100, cmap='cool')         # 画出样本
#X[:, 0]所有点的x轴坐标, X[:, 1]所有点y轴坐标。s点的大小,c是一个数组类别0,1,2按类别作色
plt.scatter(c[:, 0], c[:, 1], s=100, marker='^', c='orange')   # 画出中心点
<matplotlib.collections.PathCollection at 0x2af64625588>

sklearn实战:使用knn算法进行分类及可视化

from sklearn.neighbors import KNeighborsClassifier
# 模型训练
k = 5
clf = KNeighborsClassifier(n_neighbors=k)
clf.fit(X, y);
# 进行预测
X_sample = np.array([[0, 2]])
y_sample = clf.predict(X_sample)
# y_sample
neighbors=clf.kneighbors(X_sample, return_distance=False)
neighbors #取出来的点是训练样本X里的索引
array([[16, 20, 48,  6, 23]], dtype=int64)
# 画出示意图
plt.figure(figsize=(16,10), dpi=144)
plt.scatter(X[:, 0], X[:, 1], c=y, s=100, cmap='cool');    # 样本
plt.scatter(c[:, 0], c[:, 1], s=100, marker='^', c='k');   # 中心点
plt.scatter(X_sample[0][0], X_sample[0][1], marker="x",
            c='r', s=200, cmap='cool')    # 待预测的点

for i in neighbors[0]:
    plt.plot([X[i][0], X_sample[0][0]], [X[i][1], X_sample[0][1]], 
             '-.', linewidth=0.6);    # 预测点与距离最近的 5 个样本的连线
#[X[i][0], X_sample[0][0]] , x坐标
# [X[i][1], X_sample[0][1]],y坐标

sklearn实战:使用knn算法进行分类及可视化

相关标签: sklearn