KNN鸢尾花分类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以发现黄色和绿色分的不太开,可以更换切片方式
在这里插入图片描述
使用后两个明显分得更开,实验效果应该会更好,但因为官网使用前两个,所以我们仍旧使用前两个
在这里插入图片描述
在这里插入图片描述
还有另一种处理测试数据的方法(ravel)
在这里插入图片描述
关于这个函数,还有个更直观的例子
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用的是c = y_由系统自动根据y_来调配颜色,其实也可以指定颜色
在这里插入图片描述
可以根据自己喜好更改颜色
在这里插入图片描述
除了使用scatter来画图。还可以使用countourf来画图
跟上面相比,它耗费的时间会相对短一点儿(画轮廓面跟散点图比起来,当然是轮廓面更快一点)

全部代码:

import numpy as np

import matplotlib,pylab as pyb
%matplotlib inline

from sklearn.neighbors import KNeighborsClassifier

from sklearn import datasets

###加载数据,数据降维(画图)

X,y = datasets.load_iris(True)
#4个属性 4维空间,4维的数据
#150代表样本的数量
X.shape

#降维,切片:简单粗暴的方式(信息量变少了)
X = X[:,:2]
X.shape
#训练数据shape
#测试数据也应是这个形状(?,2)

pyb.scatter(X[:,0],X[:,1],c = y)
#c表示更改颜色,等于y是指根据不同y值分配颜色

###KNN算法训练数据

knn = KNeighborsClassifier(n_neighbors=5)

#使用150个样本点作为训练数据
knn.fit(X,y)

###meshgrid提取测试数据(8000个测试样本)

#获取测试数据
#横坐标4--8;纵坐标2--4.5
#背景点,取出来,meshgrid
x1 = np.linspace(4,8,100)

y1 = np.linspace(2,4.5,80)

X1,Y1 = np.meshgrid(x1,y1)
display(X1.shape,Y1.shape)

#处理测试数据,使其shape类似于训练数据
# X1 = X1.reshape(-1,1)
# Y1 = Y1.reshape(-1,1)

# X_test = np.concatenate([X1,Y1],axis = 1)
# X_test.shape

#平铺,一维化,reshape
X_test = np.c_[X1.ravel(),Y1.ravel()]

X_test.shape

###使用训练数据进行预测

%%time
#查看执行时间,一个%只控制一行,因为下面进行了换行,所以用两个%%
y_ = knn.predict(X_test)
#或者可以这样写
#%time  y_ = knn.predict(X_test)
#注意%time一般放在第一行,放在第二行可能报错

from matplotlib.colors import ListedColormap

lc = ListedColormap(['#FFAAAA','#AAFFAA','#AAAAFF'])

lc2 = ListedColormap(['#FF0000','#00FF00','#0000FF'])

pyb.scatter(X_test[:,0],X_test[:,1],c = y_,cmap = lc)

pyb.scatter(X[:,0],X[:,1],c = y,cmap = lc2)

pyb.contourf(X1,Y1,y_.reshape(80,100),cmap = lc)

pyb.scatter(X[:,0],X[:,1],c = y,cmap = lc2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值