k最近邻算法几乎每句代码都有标注
也是刚开始学习机器学习的人,希望能帮助那些学机器学习看到机器学习代码一脸懵逼的人
from sklearn.datasets import make_blobs #导入数据集编程器
from sklearn.neighbors import KNeighborsClassifier #导入KNN分类器
import matplotlib.pyplot as plt#导入画图工具
import numpy as np
from sklearn.model_selection import train_test_split#导入数据集拆分工具
data = make_blobs(n_samples=500,centers=5,random_state=3)
# print(data)
# print("--------------------------------------------")
x,y = data#x为生成的所有点的坐标n_samples*2的二维矩阵,y为每个点对应的类别
# print(x)
#第11和12行代码为了算出所需矩形框架,就是确定好矩形4个点
x_min,x_max=x[:,0].min() -1 ,x[:,0].max() +1#获取所有点坐标x的最小值,获取所有点的x最大值
y_min,y_max=x[:,1].min() -1 ,x[:,1].max() +1#获取所有点坐标y最小值,获取所有点y最大值
clf =KNeighborsClassifier()
clf.fit(x,y)#x为训练数据,y为标签集(x对应的每个点都有对应的分组)
xx,yy=np.meshgrid(np.arange(x_min,x_max,0.02),np.arange(y_min,y_max,0.02))#生成一个密集矩阵包含全部所需预测点
# print("xx",xx)
# print("yy",yy)
# print("--------------------------------------------------")
z=clf.predict(np.c_[xx.ravel(),yy.ravel()])
# print("z1",z)
z = z.reshape(xx.shape)
# print("---------------------------------")
# print("z2",z)
plt.pcolormesh(xx,yy,z,shading="auto",cmap=plt.cm.Pastel1)#xx为被KNNpredict分类的x坐标,yy为被KNNpredict分类的y坐标,z为每个坐标所属的类别,plt.pcolormesh的作用在于能够直观表现出分类边界
plt.xlim(xx.min(),xx.max())
plt.ylim(yy.min(),yy.max())
# print("数据x",x)
# print("________________________________________")
# print("数据y",y)
plt.scatter(x[0:,0],x[0:,1],c=y,cmap=plt.cm.spring,edgecolors="k")
plt.scatter(3,4,marker="*",s=200,c="red")
print("该点的分类",clf.predict([[3,4]]))
plt.show()
谢谢三连,持续更新机器学习
一起进步