加载中...
KNN
发表于:2021-11-08 | 分类: 机器学习课程(魏)
1
2
3
4
5
from sklearn.datasets import make_blobs #调用生成数据函数
from sklearn.neighbors import KNeighborsClassifier #调用KNN分类器函数
import matplotlib.pyplot as plt
import numpy as np
from scipy.io import loadmat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
data=make_blobs(n_samples=1000,n_features=2,centers=5,random_state=1)#生成数据
x,y=data #x获取数据的横轴和纵轴坐标,y获取数据的类别(标签)
plt.figure()#产生一个画布
plt.scatter(x[:,0],x[:,1],c=y,cmap=plt.cm.spring,edgecolor='k')#x[:,0]数据的横轴、x[:,1]数据的纵轴
#c:颜色;cm.spring数据点的可视化风格;edgecolor数据点的边界颜色。
model=KNeighborsClassifier()#生成一个初始化的knn分类器模型
model.fit(x,y)#对初始化的knn分类器进行训练(用现有的训练样本进行训练)

xmin,xmax=x[:,0].min()-1,x[:,0].max()+1#获取训练样本横轴坐标的最小值和最大值
ymin,ymax=x[:,1].min()-1,x[:,1].max()+1#获取训练样本纵轴坐标的最小值和最大值
x1,y1=np.meshgrid(np.arange(xmin,xmax,0.02),np.arange(ymin,ymax,0.02))
#对整个训练样本数据的分布空间进行网格化
z=model.predict(np.c_[x1.ravel(),y1.ravel()])#对空间数据进行分类
z=z.reshape(x1.shape)#对分类后的数据进行变形(从一维变到二维)
plt.figure()#产生一个画布
plt.pcolormesh(x1,y1,z,cmap=plt.cm.Pastel1)
plt.scatter(x[:,0],x[:,1],c=y,cmap=plt.cm.spring,edgecolor='k')
plt.show()
c:\users\administrator\appdata\local\programs\python\python37\lib\site-packages\ipykernel_launcher.py:16: MatplotlibDeprecationWarning: shading='flat' when X and Y have the same dimensions as C is deprecated since 3.3.  Either specify the corners of the quadrilaterals with X and Y, or pass shading='auto', 'nearest' or 'gouraud', or set rcParams['pcolor.shading'].  This will become an error two minor releases later.
  app.launch_new_instance()

png

png

1
2
3
4
5
6
7
8
9
10
mnist=loadmat('mnist-original.mat')
x,y=mnist["data"],mnist["label"]
x=x.T
y=y[0]
some_digit=x[69000]
x_train=x[:60000]
y_train=y[:60000]
model=KNeighborsClassifier()
model.fit(x_train,y_train)
print(model.predict([some_digit]))
[9.]
1

上一篇:
KMeans
下一篇:
SVM
本文目录
本文目录