JobPlus知识库 互联网 其它 文章
kNN算法python实现

knn(k-Nearest Neighbor Classification)算法示例 
又称k-近邻分类算法,是一种非参数模型,参数模型(逻辑回归,线性回归) 
它的思想是:一个样本在特征空间中,总会有k个最相似(即特征空间中最邻近)的样本。其中,大多数样本属于某一类别,即该样本也属于这个类别。 
分类-有监督学习 
聚类-无监督学习 
算法流程 
(1)计算已知类别数据集中的点与当前点的距离 
(2)按照距离递增次序排序 
(3)选取与当前距离最小的k个点 
(4)确定前k个点所在类别对应的出现频率 
(5)返回前k个点出现频率最高的类别作为当前点的预测分类 
算法实现:

import numpy as np 

import matplotlib.pyplot as plt

from matplotlib.colors import ListedColormap

from sklearn.neighbors import KNeighborsClassifier

from sklearn.datasets import load_iris


# 加载数据

iris = load_iris()

# 方便画图,只采用两个特征

X = iris.data[:, :2] 

y = iris.target 

print(iris.DESCR) 

print(iris.feature_names) 

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

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

# 初始化分类器对象

clf = KNeighborsClassifier(n_neighbors=15, weights='uniform') 

clf.fit(X, y)

# 画出决策边界,用不同颜色表示

x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1

y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1

xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02), np.arange(y_min, y_max, 0.02)) 

z = clf.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape) 

plt.figure()

# 绘制预测结果图

plt.pcolormesh(xx,yy,z,cmap=cmap_light)

# 补充训练数据点

plt.scatter(X[:,0],X[:,1],c=y,cmap=cmap_bold) 

plt.xlim(xx.min(),xx.max()) 

plt.ylim(yy.min(),yy.max()) 

plt.title("3-Class classification (k=15,weights='uniform')") 

plt.show()


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
389人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序