暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

K-近邻 python实现

云南高校数据化运营管理工程中心 2019-05-17
356

目录






(一)python实现

(二)使用scikit-learn包实现






编辑:

校对:

版本:

Jiangnan

Jiangnan

python3

python实现


       根据上一篇的例子我们可以写出K-近邻算法的伪代码,如下:

对未知类别的数据集中的每个数据进行以下操作:

(1)计算已知数据集中的每个数据与未知类别数据的距离。

(2)按照距离进行递增排序。

(3)选取与未知数据最近的K个数据。

(4)计算前K个数据所属分类出现的频率。

(5)返回前K个数据出现频率最高的分类作为未知数据的分类。

K近邻算法:

  1. from numpy import *

  2. #将函数库中的所有模块导入

  3. import operator

  4. #导入运算符模块


  5. def createDataSet():

  6. group = array([[1.0,1.1],[1.0,1.0],

  7. [0,0],[0,0.1]])

  8. #四个数据每个数据两个特征

  9. labels = ['A','A','B','B']

  10. #四个标签

  11. return group, labels


  12. def classify0(inX, dataSet, labels, k):

  13. #inx 为未知数据,dataset 已知数据集,

  14. # labels 已知数据集分类

  15. dataSetSize = dataSet.shape[0]

  16. diffMat = tile(inX, (dataSetSize,1)) - dataSet

  17. sqDiffMat = diffMat**2

  18. sqDistances = sqDiffMat.sum(axis=1)

  19. distances = sqDistances**0.5

  20. sortedDistIndicies = distances.argsort()

  21. classCount={}

  22. for i in range(k):

  23. voteIlabel = labels[sortedDistIndicies[i]]

  24. classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1

  25. sortedClassCount = \

  26. sorted(classCount.items(),

  27. key=operator.itemgetter(1),

  28. reverse=True)

  29. return sortedClassCount[0][0]


使用scikit-learn包实现


       scikit-learn是python中的机器学习工具包,它包含了分类、回归、聚类、降维、模型选择、预处理的子模块。我们可以使用分类模块中的最近邻来时现与上面代码一样的功能。


  1. from sklearn.neighbors import KNeighborsClassifier

  2. # 导入sklearn.neighbors模块中KNN

  3. import numpy as np


  4. group = np.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])

  5. #四个数据每个数据两个特征

  6. labels = ['A','A','B','B']

  7. #四个标签


  8. knn = KNeighborsClassifier(n_neighbors=3)

  9. # 定义一个knn分类器对象,k=3

  10. knn.fit(group,labels)

  11. # 调用该对象的训练方法,主要接收两个参数:

  12. # 训练数据集及其样本标签


  13. y_predict = knn.predict([[0,0]])

  14. #预测[[0,0]]的分类

  15. print('y_predict = ')

  16. print(y_predict)

  17. # 输出预测的结果



思考——学而不思则罔

       sklearn 中的k-近邻除了fit(),predict()还有那些函数是经常使用到的?


理解编程语言,探索数据奥秘

每日练习|干货分享|新闻资讯|公益平台。

每天学习一点点,你将会见到全新的自己。

长按识别二维码关注


文章转载自云南高校数据化运营管理工程中心,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论