K最近邻结点算法(k-Nearest Neighbor algorithm)KNN——python简单实现
2013-11-20 10:40
861 查看
代码实现:
# -*- coding: utf-8 -*- import numpy #from numpy import * import operator #函数功能:将数据文件转换为矩阵形式 def FileToMartix(filename): f = open(filename) arrayLines = f.readlines() numberOfLines = len(arrayLines) returnMat = numpy.zeros((numberOfLines , 3)) classLabeVector = [] index = 0 for line in arrayLines: line = line.strip() listFromLine = line.split('\t') returnMat[index,:] = listFromLine[0:-1] classLabeVector.append(int(listFromLine[-1])) index += 1 return returnMat , classLabeVector #数据归一化处理 #newvalue = (oldvalue - min)/(max - min) def normlized(dataset): #n维数组的最大值,最小值 minval = dataset.min(0) maxval = dataset.max(0) ranges = maxval - minval norDataSet = numpy.zeros(numpy.shape(dataset)) m = dataset.shape[0] norDataSet = dataset - numpy.tile(minval , (m , 1)) norDataSet = norDataSet / numpy.tile(ranges , (m , 1)) return norDataSet , ranges , minval #KNN分类器 #输入参数:目标测试样本vect ,训练集:dataset , 样本标签:lables , 近邻数:k def classified(vect , dataSet , lables , k): dataSize = dataSet.shape[0] diffMat = numpy.tile(vect , (dataSize , 1)) - dataSet sqDiffMat = diffMat**2 sqDistance = sqDiffMat.sum(axis = 1) distances = sqDistance**0.5 sortedIndicies = distances.argsort() classCount = {} for i in range(k): voteLable = lables[sortedIndicies[i]] classCount[voteLable] = classCount.get(voteLable , 0) + 1 sortedClassCount = sorted(classCount.iteritems() , key = operator.itemgetter(1) , reverse = True) return sortedClassCount[0][0]
相关文章推荐
- win7 + python + opencv
- python循环
- python 第三方模块MySQLdb安装
- python的dict,set,list,tuple简单分析
- python正则表达式抓取成语网站
- 如何在windows下安装python第三方包
- Python的系统管理_02python和Ipython数据类型
- 在python程序中创建文件,并输入字符串,最终传递到另一个文件
- python之简析restful
- python爬取网站数据保存使用的方法
- python MR 中reduce迭代
- Blog站的设计问题(一)
- python爬取网站数据保存使用的方法
- python正则表达式抓取成语网站
- python从ftp下载数据保存实例
- python和shell变量互相传递的几种方法
- python调用shell的方法
- python learning
- Python的一些扩展库
- python 中偏函数 partial 的使用