问题所在是,
我们什么时候才能起草出
一份人工智能法案?
——格雷·斯科特
一个简单的“鸟类分类系统”作为切入点,介绍了机器学习算法中常用到的基本术语。这个系统用到的鸟物种分类表如下:
对上面的数据进行数字转化,特征工程转化,因为机器吃的是数据。
说明:
脚蹼:0:无,1:有
后背颜色:1:棕色,0:灰色,2黑色,3绿色
种属:hwy:红尾鵟,:luying:鹭鹰,ptbird:普通潜鸟,guilinfn:瑰丽蜂鸟,xiangyazmn:象牙喙啄木鸟
数字转换后的表如下:
我们称其为一个专家系统,因为它可以像一个研究鸟类的专家一样识别鸟类的种属。表中使用了四种不同的属性值来区分不同鸟类。现实中,你可能会想测量更多的值。通常的做法是测量所有可测属性,而后再挑选出重要部分。我们称使用的这四种属性为特征。表中的每一行都是一个具有相关特征的实例或称样本。
特征数值的类型:表中的前两种特征是连续型(数值型)的,即它的取值是连续的实数;第三种特征是二值型的,只可以取是或否;第四种特征是基于有限颜色范围的枚举型。我们称二值型、枚举型这样只可以取有限个值的特征为离散型(标称型)的。
机器学习的任务——分类:鸟类分类系统完成的是一个分类任务。这很好理解,因为这个系统要做的事是分给未知的(鸟类)样本一个已知的种类。
机器学习算法的流程:
我们首先要做的是算法训练,即学习如何分类。即为算法输入大量已分类数据作为算法的训练集。训练集是用于训练机器学习算法的数据样本集合。表中即包含六个训练样本的训练集。每个训练样本有若干个特征(本例为4个)和一个目标变量(表示样本所属的类别)。目标变量是机器学习算法的预测结果,在分类算法中目标变量的类型通常是标称型的。我们通常将分类问题中的目标变量称为类别,并假定分类问题只存在有限个数的类别。
为了测试机器学习算法的效果,通常将现有数据分为两套独立的数据集:训练数据和测试数据。当机器学习程序开始运行时,使用训练样本作为算法的输入,训练完成之后输入测试样本。输入测试样本时并不提供测试样本的目标变量,而是由程序决定样本的类别。通过比较程序预测的样本类别与实际样本类别(目标变量)之间的差异,就可以得出算法的实际精确度。我们称算法输出的结果为模型。经过训练、测试准确率良好的模型就可以被保存下来,用于对未知的鸟类样本分类。
把上表的数据特征化处理:
这里我们需要用到库:sklearn,和决策树tree,安装好后导入既可。
下面对特征和种类数据处理:
根据处理的数据建立模型,让机器判断根据特征数据,做出男女判断。首先创建了决策树对象birdjcs=tree.DecisionTreeClassifier(),然后把数据变量引入到决策树对象,交给机器判断。
根据这个机器学习模型,假设我们给出了鸟的体重3200,翼展218,脚蹼无,后背颜色灰色,机器会判断此鸟是哪类鸟?
执行如下程序:birdjcs.predict([[3200.0.218.0,0,0]])
机器学习模型判断此鸟输出为luying,翻译成中文对应的是鹭鹰。