1 为什么选择用Python
大家有没有想过,为什么Python不知不觉中成了最流行的机器学习语言之一?
随着人工智能技术的发展与普及,Python超越了许多其他编程语言,成为了机器学习领域中最热门最常用的编程语言之一。有许多原因致使Python在众多开发者中如此受追捧,其中之一便是其拥有大量的与机器学习相关的开源框架以及工具库。根据http://builtwith.com的数据显示,45%的科技公司都倾向于使用Python作为人工智能与机器学习领域的编程语言。
简单说:Python是一种很简洁的语言,容易写、容易读,而且在机器学习方面有独特的优势。
使Python如此受欢迎主要由于:
1.Python从设计之初就是为效率而生,以使项目从开发到部署再在运维都能保持较高的生产力;
2.社区有大量的基于Python的开源框架及工具库;
3.Python易于上手,可以说是编程小白的福音;
4.相比起C、Java、C++来讲,Python的语法更简单,更高级,只需要更少行数的代码便能实现其他编程
语言同样的功能;
Python的跨平台能力;
正是由于Python简单易用以及高开发效率,吸引了大量的开发者为其创建更多新的机器学习工具库;而
又因为大量的机器学习工具库的出现,使得Python在机器学习领域变得如此流行。
2 机器学习和深度学习框架
大家可能听说过机器学习和深度学习“框架”这个名词,这个框架的作用可是很大的。想象一下,有一天老板说:“来,给你们一个任务,用机器学习的方法给咱们这些图片分类。”你们去Google查询了一下,发现这种图片分类任务用卷积神经网络来解决最好。但是你们很疑惑从头开始编写一个卷积神经网络是好做法吗?
Python的机器学习框架,也就是各种Python库,里面包含定义好的数据结构以及很多库函数、方法、模型等(即API)。我们只需要选择一个适合的框架,通过调用其中的API,编写少量代码,就可以快速建立机器学习模型了。为什么刚才的机器学习实战中只用了不到20行代码就能够完成预测加州房价这么“艰巨”的任务?其中最大的秘密就是使用了框架中的API。
良好的框架不仅易于理解,还支持并行化计算(即硬件加速),并能够自动计算微分、链式求导不明觉厉”是吧?不要紧,正因为框架把这些都做了,同学们就无须自己做这些不懂的东西。
下图中,给出了8个机器学习中常用的库。
8个机器学习常用的库
这8个库,可分为3大类:Pandas和Num Py提供数据结构,支持数学运算;Matplotlib和Seaborn用于数据可视化;后面4个库提供算法,其中的Scikit-learn是机器学习框架, Tesnsor Flow、Keras和Py Torch则是深度学习框架,可以选择一个来用。另有一些曾经有影响力的框架,如Theano、Caffe、CNTK等,随着“江山代有才人出”,使用率已经大大下降。而新的更方便的库呢?那也一定会继续涌现。
2.1 Pandas
Pandas是一个Python机器学习库,Pandas是基于Numpy的一种工具,它提供了各种高级的工具用于进行数据分析。其中一项了不起的功能便是它可以用一两行代码就能实现复杂的数据操作。Pandas有许多内置的方法用于分组统计、合并数据、数据筛选、以及时间序列操作。所有的这些操作都有出色的性能表现。因此,使用Pandas通常用于数据挖掘任务。
2.2 Num Py
Numpy是公认的最受欢迎的Python机器学习库之一。Tensorflow以及其他的一些框架内部都使用了Numpy来对张量进行多种操作。数组接口是Numpy最佳及最重要的功能。这个接口可以用于把图像、音频、以及其他二进制流数据表示为多维实数数组。为了把这个库应用到机器学习中,掌握Numpy的操作对于开发者而言意义重大。
与Pandas的区别:
Numpy提供了用于多维数组的对象,而Pandas能够提供称为DataFrame的内存中二维表对象·;Pandas模块主要处理表格数据,而Numpy模块处理数字数据;与Pandas对比,Numpy消耗更少的内存。
2.3 Matplotlib
Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。
Matplotlib 可以用来绘制各种静态,动态,交互式的图表。
Matplotlib 是一个非常强大的 Python 画图工具,我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来。
Matplotlib 可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。
2.4 Seaborn
Seaborn它基于 Matplotlib,用来制作统计图形的 Python 库。
Seaborn 的优势:
图表丰富,比 matplotlib 易用
与 pandas 结合
支持数值类型多变量关系图
支持数值类型数据分布图
支持类别类型数据可视化
支持回归模型以及可视化
轻松构建结构化多图网格
2.5 Scikit-learn
Scikit-learn前面已经用过了。用于预测加州房价的机器学习模型Linear Regression就是直接从那儿“拎”出来的。
它简称Sklearn,是一个相当强大的Python机器学习库,也是简单有效的数据挖掘和数据分析工具。Sklearn基于Num Py、Sci Py和Matplotlib构建,其功能涵盖了从数据预处理到训练模型,再到性能评估的各个方面。
Scikit-learn真的太好用了,它里面包含的大量可以直接使用的机器学习算法,这节省了很多时间。因为不必重复编写算法,更多的精力可以放在问题定义、数据分析、调整参数、模型性能优化等这些具体项目相关的工作上面。
2.6 Tensor Flow
TensorFlow 是谷歌发布的深度学习开源的计算框架,该计算框架可以很好地实现各种深度学习算法,涉及自然语言处理、机器翻译、图像描述、图像分类等一系列技术。
简单来说,TensorFlow 为我们封装了大量机器学习、神经网络的函数,帮助我们高效地解决问题。
2.7 Keras
Keras建立在TensorFlow、CNTK或Theano这些后端框架之上。这也就是说,Keras比TensorFlow更高级。在计算机领域,高级是“简单”的代名词。高级意味着易学易用。
Keras才出来没两年时,就已经大受欢迎,到现在已经是除Tensor Flow外最流行的、排行第二位的深度学习框架。
搞机器学习的人,就喜欢简单易用的工具。
其实,写Keras的时候是在对其后端进行调用,相当于还是在Tensor Flow上运行程序,只不过将程序经过Keras中转了一下变成Tensor Flow听得懂的语言,再交给Tensor Flow处理。
2.8 Py Torch
Py Torch是Tensor Flow的竞争对手,也是一个非常“优雅”的机器学习框架。相对Tensor Flow而言,Facebook开发的Py Torch上手相对简单一些,里面所有的算法都是用Python写的,源码也很简洁。近期Py Torch用户量的增长也是相当迅速的。