机器学习就是把无序的东西转换成有用的信息。
1.机器学习的术语:专家系统、特征(属性)、实例、训练集(特征、目标变量)、测试数据、知识表示
目标变量是机器学习算法的预测结果:分类算法中目标变量的类型一般为标称型;在回归算法中,目标变量的类型一般为连续型。
2.机器学习的主要任务:
监督学习:分类、回归(预测数据)
无监督学习:聚类,密度估计
3.NumPy函数库基础
1.k-近邻算法概述
采用测量不同特征值之间的距离方法进行分类。
工作原理:存在一个数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据的分类标签。一般来说,只选择样本数据集中前K个最相似的数据,通常k不大于20.最后选择k个最相似数据中出现次数最多的分类,作为新数据的分类。
kNN算法:
1) 计算已知类别数据集中的点与当前点之间的距离
2) 按照距离递增次序排序
3) 选取与当前点距离最小的K个点
4) 确定前K个点所在类别的出现频率
5) 返回前K个点出现频率最高的类别作为当前点的预测分类
第一个分类器的实现:
from numpyimport *
import operator
defcreateDataSet():
group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels=['A','A','B','B']
return group, labels
defclassify0(inX,dataSet,labels,k)://inX是用于分类的输入向量;dataSet是输入的训练样本集;labels是标签向量;k是选择的最近邻数目
dataSetSize=dataSet.shape[0]//看行数
diffMat=tile(inX,(dataSetSize,1)) -dataSet//tile函数重复inX的行dataSetSize次,行1次
sqDiffMat = diffMat**2
sqDistances=sqDiffMat.sum(axis=1)
distances=sqDistances**0.5
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]
算法概述: 将原始数据集根据决定性特征划分为几个数据子集,这些数据子集会分布在第一个决策点的所有分支上,如果某个分支下的数据属于同一类型,则表示到达终止模块,可以得到结论,无需进一步对数据集进行分割;如果子集内的数据不属于同一类型,则需重复划分数据子集,直到所有具有相同类型的数据均在一个数据子集内。但是应该怎样划分数据呢,显然是根据决定性特征,这里引进一个度量标准--信息增益(划分数据集之前之后信息发生的变化),我们可以计算每个特征值划分划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。
贝叶斯决策理论:
,那么属于类型1
,那么属于类型2
朴素贝叶斯分类器是用于文档分类的常用算法,假设:各个特征之间独立,每个特征同等重要