KNN-iris分类

import numpy as np

import matplotlib.pylab as pyb
%matplotlib inline

from sklearn.neighbors import KNeighborsClassifier

from sklearn import datasets
d:\python3.6.8\lib\importlib\_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216, got 192
  return f(*args, **kwds)

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

X,y = datasets.load_iris(True)
# 4个属性,4维空间,4维的数据
# 150代表样本的数量
X.shape
(150, 4)
# 降维,切片:简单粗暴方式(信息量变少了)
X = X[:,:2]
X.shape
(150, 2)
pyb.scatter(X[:,0],X[:,1],c = y)
<matplotlib.collections.PathCollection at 0x23c0b98be10>

KNN算法训练数据

knn = KNeighborsClassifier(n_neighbors=5)

# 使用150个样本点作为训练数据
knn.fit(X,y)
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
           metric_params=None, n_jobs=None, n_neighbors=5, p=2,
           weights='uniform')
# 训练数据
X.shape
# 测试数据 shape (?,2)
(150, 2)

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)

# 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
(8000, 2)

使用算法进行预测,可视化

%%time 
y_ = knn.predict(X_test)
Wall time: 258 ms
from matplotlib.colors import ListedColormap
lc = ListedColormap(['#FFAAAA','#AAFFAA','#AAAAFF'])

lc2 = ListedColormap(['#FF0000','#00FF00','#0000FF'])
%%time
pyb.scatter(X_test[:,0],X_test[:,1],c = y_,cmap = lc)
pyb.scatter(X[:,0],X[:,1],c = y,cmap = lc2)
Wall time: 49.6 ms

在这里插入图片描述

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

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

猜你喜欢

转载自blog.csdn.net/qq_42166308/article/details/103300087