机器学习python kNN算法
2018-01-31 15:07
405 查看
from numpy import * import operator 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 def classify0(inX,dataSet,labels,k): #inX为输入向量,dataSet为训练向量,labels为训练的标签向量,k为最近邻居的数目 dataSetSize = dataSet.shape[0] diffMat = tile(inX,(dataSetSize,1)) - dataSet #将输入向量拓展为训练向量规模一样 pingfang = diffMat ** 2 d_pingfang = pingfang.sum(axis=1) #逐行操作 d = d_pingfang ** 0.5 sortedDistIndicies = d.argsort() classCount = {} for i in range(k): voteIlabel = labels[sortedDistIndicies[i]] classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1 sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1),reverse=True) return sortedClassCount[0][0] #将文本数据转化为Numpy的解析函数 def file2matrix(filename): fr = open(filename) arrayOLines = fr.readlines() numbersOfLines = len(arrayOLines) returnMat = zeros((numbersOfLines,3)) classLabelVector = [] index = 0 for line in arrayOLines: 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 m = dataSet.shape[0] normDataSet = zeros(shape(dataSet)) normDataSet = dataSet - tile(minVals,(m,1)) normDataSet = normDataSet / tile(ranges,(m,1)) return normDataSet,ranges,minVals def datingClassTest(): hoRatio = 0.1 datingDataMat,datingLabels = file2matrix('datingTestSet2.txt') #load data setfrom file normMat, ranges, minVals = autoNorm(datingDataMat) m = normMat.shape[0] numTestVecs = int(m*hoRatio) errorCount = 0.0 for i in range(numTestVecs): classifierResult = classify0(normMat[i,:],normMat[:m-numTestVecs,:],datingLabels[:m-numTestVecs],3) print ("the classifier came back with: %d, the real answer is: %d" % (classifierResult, datingLabels[i])) if (classifierResult != datingLabels[i]): errorCount += 1.0 print ("the total error rate is: %f" % (errorCount/float(numTestVecs))) print(errorCount)
相关文章推荐
- 用Python开始机器学习(4:KNN分类算法) sklearn做KNN算法 python
- Python机器学习实战笔记之KNN算法
- 纯python实现机器学习之kNN算法示例
- 用Python开始机器学习(4:KNN分类算法)
- 机器学习专题(一)——KNN算法的python实现
- 机器学习KNN——Python算法实现
- 机器学习与数据挖掘系列算法之--knn的python实现
- python机器学习案例系列教程——K最近邻算法(KNN)、kd树
- 机器学习经典算法详解及Python实现--K近邻(KNN)算法
- python 机器学习KNN分类算法
- python机器学习之KNN分类算法
- 机器学习-----之KNN近邻算法(python3)
- 机器学习-KNN算法(python)
- 机器学习 Python kNN算法
- 机器学习经典算法详解及Python实现--K近邻(KNN)算法
- python机器学习(一)KNN算法
- 机器学习实战_kNN算法python3.6实现与理解
- 用Python开始机器学习(4:KNN分类算法)
- 机器学习经典算法详解及Python实现--K近邻(KNN)算法
- [机器学习]kNN算法python实现(实例:数字识别)