KNN实践判断iris花的品种
来源:互联网 发布:dcs组态算法转换 编辑:程序博客网 时间:2024/06/02 23:43
k邻近(KNN)算法应该是机器学习算法中最简单的一个吧。
kNN(k Nearest Neighbors)算法又叫k最临近方法, 总体来说kNN算法是相对比较容易理解的算法之一,假设每一个类包含多个样本数据,而且每个数据都有一个唯一的类标记表示这些样本是属于哪一个分类, kNN就是计算每个样本数据到待分类数据的距离,取和待分类数据最近的k各样本数据,那么这个k个样本数据中哪个类别的样本数据占多数,则待分类数据就属于该类别。
不过KNN的不足也很明显,计算量大,每一个判断输入都要扫一遍数据集,而且没有训练过程。
在UCI
http://archive.ics.uci.edu/ml/datasets/Iris
找到了一些数据集,数据算是非常简单了
from numpy import *import osfrom collections import Counterdef dataPre(filePath): fr = open(filePath) fileNumber = len(fr.readlines()) fr = open(filePath) simpleLine = fr.readline() simpleLine = simpleLine.strip() colNumber = len(simpleLine.split(',')) - 1 retMat = zeros((fileNumber, colNumber)) classLabel = [] index = 0 fr = open(filePath) for line in fr.readlines(): line = line.strip() cols = line.split(',') retMat[index,:] = cols[0 : colNumber] classLabel.append(cols[colNumber]) index += 1 return Norm(retMat), classLabeldef Norm(dataSet): minVals = dataSet.min(0) maxVals = dataSet.max(0) ranges = maxVals = minVals normDataSet = zeros(shape(dataSet)) m = len(dataSet) normDataSet = dataSet - tile(minVals, (m, 1)) normDataSet = normDataSet / tile(ranges, (m, 1)) return normDataSetdef classify(dataSet, dataSetLabel, input, k): iCols = input print len(dataSet[0]) if len(dataSet[0]) != len(iCols): print 'Input Error' return diffMat = tile(iCols, (len(dataSet),1)) - dataSet sqDistancesMat = (diffMat**2).sum(axis=1) distances = sqDistancesMat**0.5 sortedDistances = distances.argsort() classCount = [] for i in range(k): predictLabel = dataSetLabel[sortedDistances[i]] classCount.append(predictLabel) frequent = Counter(classCount) return frequent.most_common(1)[0][0]
上面没有测试数据,我自己做了一些数据测试,全中!bingo!
0 0
- KNN实践判断iris花的品种
- iris数据的KNN实现
- Spark 机器学习实践 :Iris数据集的分类
- KNN临近算法的原理及实例(iris分类)代码实现
- iris数据集进行KNN分类
- 机器学习-KNN分类算法Iris实例
- 关心的几个品种
- 精油的品种
- 咖啡的品种
- 单品种的对应表
- python 实现 knn分类算法 (Iris 数据集)
- 机器学习-实战-入门-javaml-KNN处理iris
- python中利用KNN实现对iris进行分类
- java实现Knn算法,用iris数据集进行验证
- iris
- KNN 实践笔记
- Python-KNN算法实践
- kNN算法实践
- 念整数
- 为什么Lisp语言如此先进?
- 整型数据与字符串类型相互转化的一种实现方法
- Struts框架中的XML配置文件(二)
- c#多线程之Task
- KNN实践判断iris花的品种
- SQL Server---进程死锁查杀
- windows环境下wampserver的配置教程&memcache安装&mysql提示字符乱码
- 02wirksharpktcp
- Lufylegend库学习笔记1 绘图操作及鼠标事件
- mac环境安装docker时提示docker@localhost's password:
- HttpServletResponse状态码对照表(访问网页时提示)
- Ubuntu 14.04 下手动安装Firefox的Flash插件
- 1002 写出这个数