小之的公众号 : WeaponZhi。关注公众号并回复AI获取AI+Python资料和机器学习入门视频教程python
咱们先要学习的机器学习算法是监督学习,那么,何为监督学习呢?要了解监督学习,咱们得先回顾下咱们平时的编码方式。咱们平时的编码方式是一种硬编码,简而言之就是面对问题的时候,咱们经过正向暴力编码,将问题的各个方面和逻辑经过编码来处理,从而使得代码按照咱们的思路一步步运行下去,最终解决咱们的既定问题。算法
打个比方,假设咱们要写一个代码来区分一我的的性别,咱们可能首先会提取出男人和女人的特色,好比男人可能有胡子,有喉结,身高广泛在一个 xx 范围这样,那么咱们就能够根据这些属性来编写一些判断条件,最终实现一个算法,而后把某我的具有的属性输入到算法,算法输出一个结果,告诉你这我的多是啥性别。机器学习
这样可能能实现一个算法,但会有两个问题。首先就是这些属性的肯定,决定一我的是什么性别的属性可能有不少,若是属性太多,靠人工来编写算法就会显得很是不实际。其次,这些属性对于最终输出结果的影响是有限的,总会存在特例,有的男人就是不长胡子,或者有的女人身高很高,面对这种比较特殊的个例的时候,算法就很是有可能出错,显然,单纯的依靠硬编码,是不可能作到尽善尽美的。函数
而监督学习算法的作法就是,把一些既定的样本输入给算法,这些样本包括具体的特征属性和具体的输出,好比「一我的身高一米八,有胡子,有喉结」,这是它的样本输入,「这我的是个男人」是它的输出,这些具备明确输入和结果的样本输入到监督学习算法后,它会本身进行学习和总结,随着样本数量的增多,监督学习的判断规则将会被训练的 愈来愈准确和成熟。随后,面对它从未见过的样本,好比「一米六,没胡子,有喉结」,算法就会根据以前的规则给出一个它的判断,告诉你这我的多是个啥性别。学习
咱们把胡子、喉结这些属性成为特征-Features,男人仍是女人这样的输出结果称为标签-Label。为了实现这样的一个功能,咱们须要一个分类器,那么,咱们整个监督学习的过程大概是这样的。测试
scikit-learn 能够帮咱们轻易的实现上面的需求,若是你安装过 Anaconda,scikit-learn 就已经包含其中了,其余下载方式这里再也不赘述。ui
若是你是使用 Python 来学习机器学习,scikit-learn
确定是你必需要使用的机器学习库,scikit-learn
是很是保守的库,它专业性极强,只作机器学习领域,历来不会做任何机器学习领域以外的扩展。不只如此,scikit-learn 使用的机器学习算法都是通过普遍验证过的算法,这些算法每每也是效率最高,实现最简单有效的。因此,阅读 scikit-learn 的源码实现也是一个很是好的学习方式。编码
下面咱们用具体的代码来演示上面说过的三个过程。3d
在现实的应用环境中,咱们获取数据的方式是多种多样的,好比,你能够经过读取已有文件来获取数据,或者是动态的监听数据,每获取一条数据就输入一条数据。咱们就不这么复杂了,用上面判断性别的例子,简单的模拟几个数据:
>> features = [[160,30,2.1],[170,15,2.3],[178,8,2.5],[188,10,2.8],[167,22,2.2]]
>> labels = [0,0,1,1,0]
复制代码
features 是咱们的特征,拿第一个数据 [160,30,2.1] 举例子,160 表明的是身高,30 表明的是头发长度,2.1 表明的是腰围,单位为尺。好吧,原谅我想象力有点渣渣,可能例子很差,总之目前咱们使用身高、头发长度以及腰围来做为咱们判断性别的特征,固然,你还能够提取出更多的特征,这里只是为了咱们测试方便。labels 就是咱们的标签了,0 表明这我的性别为女,1 表明性别为男
这样, 咱们就算完成了第一步,收集好了真实数据
拿到了数据源,咱们须要挑选一种分类器来训练这组数据,这里咱们选择决策树,能够先暂时不要管决策树是什么,你能够把它当作实现分类器的一种形式罢了
>> from sklearn import tree
>> clf = tree.DecisionTreeClassifier()
>> clf.fit(features,labels)
复制代码
sklearn
便是 scikit-learn 库,咱们引入库中的决策树类,并使用fit()
函数来匹配特征和标签,这样,咱们的分类器就算实现好了,clf
完成了它的训练。
实际上你能够把分类器想像成一个黑盒子,经过一些数据的训练,这个盒子就具有了必定的判断能力,当你再次输入进数据的时候,它可以获得相应的预测,至于这个盒子里面到底使用了什么方法根据数据的训练来指定规则,就是你选取的算法所作的事了,好比在这里,咱们选择了决策树来做为分类器制定规则的算法,固然你还有不少算法能够选择,也能够本身实现算法,这不在咱们这篇文章的讲述范围内。下面,咱们使用实现好的分类器,对一个未知数据进行预测
>> print(clf.predict([[180, 15, 2.3]]))
[0]
复制代码
咱们使用predict()
函数来对一组分类器从未见过的数据来进行预测。分类器认为一个 1 米 8 大个,长着 15 厘米长秀发,腰围 2.3 尺 的高大个是个女孩。好吧,这是它的想法。
那么,这就是你的第一个机器学习代码了,是否是简单有趣无敌呢?
参考资料:Machine Learning Recipes with Josh Gordon
欢迎关注个人公众号