栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

KNN鸢尾花分类

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/350044.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号