KNN算法 分类项目练习

from sklearn.datasets import make_blobs
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
import numpy as np
#中心点
centers = [[-2,2],[2,2],[0,4]]
x,y = make_blobs(n_samples=60,centers=centers,cluster_std=0.6)
plt.figure(figsize=(16,10),dpi=144)
c=np.array(centers)

plt.scatter(x[:,0],x[:,1],c=y,s=100,cmap="cool")
plt.scatter(c[:,0], c[:,1], s=100, marker="^" ,c="orange")
k=5
clf=KNeighborsClassifier(n_neighbors=k)
#模型训练
clf.fit(x,y)
#对新未标记的样本预测
x_sample=[[0,2]]
#return_distance决定了是否返回计算后的距离,默认是True
#若k=5,这里返回5个邻居位于x训练集中的索引位置
neighbors=clf.kneighbors(x_sample,return_distance=False)

#把带预测的样本以及和其最近的5个点标记出来
# 画出示意图  figsize图的大小  spi是像素值
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", s=100, cmap="cool")
# 把预测点与距离最近的5个样本连成线
for i in neighbors[0]:
    plt.plot([x[i][0], x_sample[0][0]], [x[i][1], x_sample[0][1]], "k--", linewidth=0.6)
plt.show()

KNN算法 分类项目练习_第1张图片

你可能感兴趣的:(机器学习)