Machine Learning In Action:KNN(Python)
2017-06-20 11:18
405 查看
【^_^】
入手<<机器学习实践>>已经有半年了都没看,最近再来看python及项目需要,翻看此书借此来增加实践能力。
【Tools】
pycharm Pro Ver 4.5.4 + Python 3.4 + numpy
【KNN算法流程】
一种实现及理解起来比较容易的分类算法
算法流程,伪代码如下:
1.计算已知类别数据集中的点与当前点之间的距离;
2.按照距离递增次序排序;
3.选取与当前点距离最小的k个点;
4.确定前k个点所在类别出现的频率;
5.返回前k个点出现频率最高的类别作为当前点的预测分类
【KNN优缺点】
优点:精度高,对异常值不敏感,无数据输入设定
缺点:计算复杂度高,空间复杂度高
适用数据范围:数值型、标称型
【code】
===============================
只是一个demo,并未太大意义,也未进行准确率分析;
在敲代码出现以下问题:见http://blog.csdn.net/xingchenbingbuyu/article/details/51030779,还是要仔细点,numpy中Array使用[ ]要多注意!!
入手<<机器学习实践>>已经有半年了都没看,最近再来看python及项目需要,翻看此书借此来增加实践能力。
【Tools】
pycharm Pro Ver 4.5.4 + Python 3.4 + numpy
【KNN算法流程】
一种实现及理解起来比较容易的分类算法
算法流程,伪代码如下:
1.计算已知类别数据集中的点与当前点之间的距离;
2.按照距离递增次序排序;
3.选取与当前点距离最小的k个点;
4.确定前k个点所在类别出现的频率;
5.返回前k个点出现频率最高的类别作为当前点的预测分类
【KNN优缺点】
优点:精度高,对异常值不敏感,无数据输入设定
缺点:计算复杂度高,空间复杂度高
适用数据范围:数值型、标称型
【code】
# -*-coding:utf-8-*- ''' Created on Jun 17, 2017 kNN: k Nearest Neighbors Input: inX: vector to compare to existing dataset (1xN) dataSet: size m data set of known vectors (NxM) labels: data set labels (1xM vector) k: number of neighbors to use for comparison (should be an odd number) Output: the most popular class label @author: varuy ''' from numpy import * import operator # create dataset def createDataSet(): group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]]) labels = ['A', 'A', 'B', 'B'] return group, labels # 输入参数 # intX:分类的输入向量,dataSet:训练样本集,labels:标签向量,k:选择最近邻居数目 def classify0(intX, dataSet, labels, k): dataSetSize = dataSet.shape[0] diffMat = tile(intX, (dataSetSize, 1)) - dataSet # tile 用于复制标签向量intX与dataSet矩阵行数相同 sqDiffMat = diffMat ** 2 sqDistances = sqDiffMat.sum(axis=1) distances = sqDistances ** 0.5 sortedDistIndicies = distances.argsort() classCount = {} for i in range(k): voteIlabel = labels[sortedDistIndicies[i]] classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1 sortedClassCount = sorted(classCount.items(), # 书中用的是python2.7版,此处为classCount.iteritems key=operator.itemgetter(1), reverse=True) return sortedClassCount[0][0] if __name__ == '__main__': group, labels = createDataSet() xx = classify0([0, 0], group, labels, 3) print(xx)
===============================
只是一个demo,并未太大意义,也未进行准确率分析;
在敲代码出现以下问题:见http://blog.csdn.net/xingchenbingbuyu/article/details/51030779,还是要仔细点,numpy中Array使用[ ]要多注意!!
相关文章推荐
- Machine Learning In Action -- kNN的python实现
- MACHINE LEARNING IN ACTION KNN
- ###《Machine Learning in Action》 - KNN
- Machine Learning in Action_CH2_2_使用kNN改进约会网站的配对效果
- 【ML】【python】Machine Learning in Action
- 《Machine Learning in Action》 读书笔记之二:决策树(ID3)
- Machine Learning in action:k-Nearest Neighbor
- <Machine Learning in Action >之二 朴素贝叶斯 C#实现文章分类
- 学习Machine Leaning In Action(二):kNN
- 《Machine Learning in Action》 读书笔记之三:朴素贝叶斯(naive Bayes)
- Machine Learning in Action(4) Logistic Regression
- scikit-learn: machine learning in Python
- scikit-learn: machine learning in Python
- Machine Learning in Action(2) 决策树算法
- Machine Learning in Python part 2
- scikit-learn: machine learning in Python系列(一)
- Tools for Machine Learning in Python(scikit-learn)
- Machine Learning in Python (Scikit-learn)-(No.1)
- Machine Learning in Python (Scikit-learn)-(No.2)
- 《Machine Learning In Action》翻译