开发机器学习应用程序的步骤:
1、收集数据
2、准备输入数据
3、分析输入数据
4、训练算法
5、测试算法
6、使用算法
第一个算法:k-近邻算法
k-近邻算法的一般流程:
1、收集数据:可以使用任何方法
2、准备数据:距离计算所需要的数值,最好是结构化的数据格式,此时需要对数据进行格式化
3、分析数据:可以使用任何方法
4、训练算法:此步骤不适合用于k-近邻算法
5、测试算法:计算错误率
6、使用算法:首先,需要输入样本数据和结构化得输出结果,然后运行k-近邻算法判定输入数据分别属于哪个分类,最后应用对计算出的分类,执行后续的处理
2.1 kNN分类算法的实施
源码分析
from numpy import *
import operator
from os import listdir
def classify0(inX, dataSet, labels, k):
#获取dataSet的行数
dataSetSize = dataSet.shape[0]
#将inX扩展为dataSetSize*1的矩阵
diffMat = tile(inX, (dataSetSize,1)) - dataSet
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances**0.5
# 对计算后的距离进行排序,并返回相应的位置值例如【0.1,0.3,0.2】返回值为【0,2,1】
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 createDataSet():
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['A','A','B','B']
return group, labels