1、这么多人工智能库,谁是王者

我想问问同学,在资讯这么发达的大千世界,怎么才能学好一门技术。很多同学问我:“人工智能有很多知识啊,也有很多很多语言,很多工具可以做人工智能,我到底应该学习什么呢?是都学,还是先选择一种来入门呢?”

这个问题是很典型的,这段时间和同学之间的交流,我谈一谈自己的一些建议:

  1. 实现人工智能的代码库有很多,就我自己接触的就有十来种,例如scikit leran、caffe、cntk、deeplearning、mahout、openNN、tensorFLow等,但是我们并不是每一种库都需要精通。我们只需要知道他们算法的原理即可,然后就可以解决实际的问题了。
  2. 如果您是初学者,建议你深入学习其中一种,通过一种代码库来了解最基本的算法,毕竟各个库的算法和思想大致是一样的。当然,我们这里推荐使用scikit learn,因为,我们很有信心把我们掌握的知识传输给您。

Scikit learn作为一个使用流行、功能丰富的机器学习库。它在实际中有很多应用,例如数字识别,人脸识别,语音识别、身份证识别,大数据分析等。所以,这是一个让人激动人心的库,它相对来说既简单易用,又能实现很多功能,所以,让我们带着“色色”的心,来诡探一下scikit learn的完美身躯把。

2、scikit learn的六大模块

前面的课程,我们已经简单介绍了什么是scikit learn了,下面我们队scikit learn的主要模块进行介绍,如下图所示:

这几个模块都是机器学习中非常常用的模块。我们不想再以书本上的方式给大家讲一遍这六大模块的概念。因为,那并不一定能够加深大家的印象,除了让大家昏昏欲睡,真不知道有什么好处。

这里,我们以自己的理解来说明一下这几个概念的意思:

1、预处理模块

预处理:之所以先讲预处理这个烂掉牙的概念,是因为他几乎是人工智能的第一步。无论什么人工智能算法,第一步都是获取数据,获取到的数据肯定是需要先处理,才能使用的。就像炒菜,从田里采摘蔬菜后,至少需要去掉烂叶子,老叶子,再清洗,刀切,才能下锅开炒吧。这个过程就是预处理。

我们的数据预处理本质上和炒菜前的洗菜等工作没有什么本质区别,他们都属于准备工作。对于数据的准备工作,无外乎,去掉没用的数据(烂叶子)、标注化数据,如一份数据中有男女两个属性,用文字不便于算法的编写,所以,我们可以用1表示男性,2表示女性,这也是预处理啊。

好了,亲爱的同学,您理解什么是预处理了吗?哈哈。

2、降维模块

降维:将没用的,冗余的数据或者字段去掉。我假设了一个女孩的数据,大家看看下面哪些数据对您择友有帮助呢?

年龄: 25 出生年月:1992 性别:女 身高:175 有无男朋友: 有 恋爱史:2次 皮肤:白 屁股上有一个痣 嘴巴5厘米长 手指指甲1厘米长 穿过100双鞋 她的大腿有一个小时候的小小的烫伤,几乎看不出来。 她妈妈的妈妈的女儿是她妈妈

ok,我们得到这个女孩如此多的数据,我们在选择女朋友的时候,真的需要关心这么多数据吗?例如她的出生年月和年龄是重复的啊,可以去掉一个啊,去掉一个就降维了,因为属性少了一个。

她屁股上有一颗痣,这也会成员你选择的标准码?不会吧,那里也太有瑕癖了。好了,对于我来说,我需要把这个维度去掉。 还有什么穿过100双鞋之类的,我找个女朋友,我关系她穿过多少鞋干嘛啊,我有病啊,我家又不是祖传修鞋的,这个属性可以pass。

Ok,上面的过程就是降维。大家先了解到这里,我们后面的课程会详细的讲解降维的方法,肯定是没有这么简单的。

3、分类:

分类很简单,我们日常生活中经常经历。例如,看到一个人,我们会把其分为男人和女人。看到一种植物,我们会分类为不同的科目。看到一张扑克牌,我们能迅速的说出它属于哪一种花色:

分类是事先知道有哪些类别,将新来的样本分到已知道的类别中。

用自己的话来说,就是我们根据已知的一些样本(包括属性与类标号)来得到分类模型,然后通过此此模型来对新样本数据进行分类。

4、聚类:

聚类指事先并不知道任何样本的类别标号,希望通过某种算法来把一组未知类别的样本划分成若干类别,聚类的时候,我们并不关心某一类是什么,我们需要实现的目标只是把相似的东西聚到一起。

5、回归分析:

回归分析(regression analysis)是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。这里回归两个词比较难理解,我们中文中的回归,一般是指谁回来了,所以把regression翻译成回归确实不好理解。

然而换一个角度,我们这样来理解,回归就是已经知道结果,然后从结果中推导出原因,也就是从结果回溯、推导、回到原因,这样就好理解了。进一步说,回归就是已经结果,找原因的意思。

这里,大量的数据和样本是结果,而原因是变量之间的确切关系。

6、模型选择:

简单的说,就是我们队同一个问题,选择了多种模型,怎么选择这几种模型中最好的一个,这就叫做模型选择。就像选媳妇一样,选择一个最适合自己的。

3、scikit learn的目录结构

为了诡探scikit learn的完美身躯,我们来看看它的目录结构,各个目录中放有相应的AI算法,以备我们调用,如下图:

下面,我们对上图的主要目录,进行说明:

cluster目录:包含了常用的聚类方法,例如k均值聚类、层次聚类。多年的经验告诉我,就算我这里将所有聚类方法列出来,您我也记不住,所以,这里,我还不如不过多的告诉大家到底有哪些聚类方法。哈哈,不要觉得我们偷懒哦。

Datasets目录:这里是各种预先定义好的数据及数据加载模块。

Feature_extraction: 特征提取模块,存放进行特征提取的相应算法

Feature_selection: 存放特征选择的算法,和feature_extraction差不多。

Linear_model目录:线性模型算法目录。

Model_selelct目录:模型选择目录

Neighbors:最邻近算法目录

Preprocessing:预处理目录

Svm:支持向量机目录

在对scikit learn有更深入理解前,我们 有必要认真的给大家讲一讲scikit learn的顶层架构。