2_5最近邻算法kNN(k_nearest_neighbor)——classifyPerson_2_5
来源:互联网 发布:win10优化版 编辑:程序博客网 时间:2024/06/07 18:07
声明:《机器学习实战》代码详细注释和重构,以及相关的函数、模块和算法的解释;本文为博主原创文章,未经博主允许不得转载。
约会网站预测函数(程序清单2-5)
*#代码:Peter Gong_shuai
*#中文注释:Gong_shuai
*#代码重构:Gong_shuai
*#函数注解:Gong_shuai
*#相关的函数、模块和算法的解释:Gong_shuai
*#环境:Python2.7、Sublime Text3、mac代码
#coding=utf-8#约会网站预测函数(程序清单2-5)#源代码:Peter Gong_shuai#中文注释:Gong_shuai#代码重构:Gong_shuai#函数注解:Gong_shuai#环境:python2.7from numpy import *import operatorfrom os import listdir #函数listdir可以列出给定目录的文件名#处理输入格式问题,输入为文件名字符串,输出为训练样本矩阵和类标签向量def file2matrix(filename): fr = open(filename) numberOfLines = len(fr.readlines()) #得到文本行数 returnMat = zeros((numberOfLines,3)) #创建以零填充的矩阵,为了简化,另外的一个维度设为3 classLabelVector = [] #返回标签 fr = open(filename) #解析文件数据到列表,循环处理文件中的每一行的数据 index = 0 for line in fr.readlines(): line = line.strip() #截取掉所有的回车字符 listFromLine = line.split('\t') #将整行数据分割成一个元素列表 returnMat[index,:] = listFromLine[0:3] #选取前三个元素,存储到特征矩阵中 classLabelVector.append(int(listFromLine[-1])) index += 1 return returnMat,classLabelVector#归一化特征值 def autoNorm(dataSet): minVals = dataSet.min(0)#每一列的最小值 maxVals = dataSet.max(0)#每一列的最大值 ranges = maxVals - minVals normDataSet = zeros(shape(dataSet)) m = dataSet.shape[0]#数组的大小 normDataSet = dataSet - tile(minVals, (m,1))#注意事项:特征值矩阵有1000*3个值。而minVals和range的值都为1*3.为了解决这个问题使用numpy中tile函数将变量内容复制成输入矩阵同样大小的矩阵 normDataSet = normDataSet/tile(ranges, (m,1)) #element wise divide矩阵除法 return normDataSet, ranges, minVals#k近邻算法def classify0(inX, dataSet, labels, k):#输入向量,输入的训练样本集,标签向量,选择最近邻的数目 #距离计算 dataSetSize = dataSet.shape[0] diffMat = tile(inX, (dataSetSize,1)) - dataSet sqDiffMat = diffMat**2 sqDistances = sqDiffMat.sum(axis=1) distances = sqDistances**0.5 #选择距离最小的k个点 sortedDistIndicies = distances.argsort() classCount={} for i in range(k): voteIlabel = labels[sortedDistIndicies[i]] classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1 #排序 sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True) return sortedClassCount[0][0]def classifyPerson(): #约会网站预测函数 resultList = ['not at all','in small doses', 'in large doses'] percentTats = float(raw_input(\ "percentage of time spent playing video games?")) ffMiles = float(raw_input("freguent flier miles earned per year?")) iceCream = float (raw_input("liters of ice cream consumed per year?")) datingDataMat,datingLabels = file2matrix('datingTestSet2.txt') normMat, ranges, minVals = autoNorm(datingDataMat) inArr = array([fffMiles, percentTats, iceCream]) classifierResult = classifyO((inArr-\ minVals)/ranges,normMat,datingLabels,3) print "You will probably like this person: ", resultList[classifierResult - 1]classifyPerson()
0 0
- 2_5最近邻算法kNN(k_nearest_neighbor)——classifyPerson_2_5
- 2_1最近邻算法kNN(k_nearest_neighbor)——classify0_2_1
- 2_2最近邻算法kNN(k_nearest_neighbor)——file2matrix_2_2
- 2_3最近邻算法kNN(k_nearest_neighbor)——autoNorm_2_3
- 2_4最近邻算法kNN(k_nearest_neighbor)——datingClassTest_2_4
- 2_6最近邻算法kNN(k_nearest_neighbor)——handwritingClassTest_2_6
- 最近邻算法KNN
- KNN最近邻算法
- 最近邻算法(KNN)
- 最近邻算法(KNN)
- 最近邻算法(KNN)
- KNN K最近邻算法
- K最近邻算法(kNN)
- k最近邻算法(kNN)
- k最近邻(KNN)——实践
- K最近邻结点算法(k-Nearest Neighbor algorithm)KNN——python简单实现
- 机器学习十大经典算法—KNN(最近邻)
- 算法一 knn 中的 最近邻搜索
- A C M time
- Windows下搭建Weex环境【初体验】
- Android屏幕适配全攻略(最权威的官方适配指导)
- C++中map、hash_map、unordered_map、unordered_set通俗辨析
- Win10安装SQL2012或SQL2014报错
- 2_5最近邻算法kNN(k_nearest_neighbor)——classifyPerson_2_5
- 类的设计SOLID原则
- 2985:数字组合
- cmd的操作命令导出导入.dmp文件
- Halcon实例教程之电源外壳缝隙检测
- 数据结构-常见的排序算法
- Cookie的简单了解
- ZOJ-3939 The lucky week
- NSA方程式工具利用与分析