knn(k-Nearest Neighbor Classification)算法示例
又称k-近邻分类算法,是一种非参数模型,参数模型(逻辑回归,线性回归)
它的思想是:一个样本在特征空间中,总会有k个最相似(即特征空间中最邻近)的样本。其中,大多数样本属于某一类别,即该样本也属于这个类别。
分类-有监督学习
聚类-无监督学习
算法流程
(1)计算已知类别数据集中的点与当前点的距离
(2)按照距离递增次序排序
(3)选取与当前距离最小的k个点
(4)确定前k个点所在类别对应的出现频率
(5)返回前k个点出现频率最高的类别作为当前点的预测分类
算法实现:
import numpy as np import matplotlib.pyplot as pltfrom matplotlib.colors import ListedColormapfrom sklearn.neighbors import KNeighborsClassifierfrom 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() + 1y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1xx, 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()
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦