Python笔记:进击机器学习(一)--概述
Self-intro: I am a graduate student at an unnamed institution in China :) The main focus is Computer vision using deep learning. I will update some of notes about deep learning at steemit. Hope that like-minded friends follow me, and we discuss and support with each other. Thanks for reading! @whytin
1 开启Python科学之旅
本章介绍了Python在机器学习中常用的库和工具,包括数学计算和绘图。
1.1 Python数据科学生态
1.1.1 为什么选择Python?
先献上IEEE Spectrum Magazine 2017 编程排行图一张
Python 的排名从去年开始就在持续上升,并跃至第一。
抛开这骄人的成绩,我们讲一讲做数据科学的刚需:
- 获取数据
- 操作数据
- 可视化数据
那么Python的优势又是什么:
- Python存在丰富的数学计算、绘图和数据处理的工具。我们不需要复杂的编程去绘制一条曲线、计算傅里叶变换和一个基础的算法。用老外的一句话来形容就特别贴切,Don’t reinvent the wheel!
- Python相比起其他高级语言来说是容易上手的,没有那么多复杂的格式,只需用缩进来规整格式。相比起C、C++这些开发语言来说,高级语言的优势就明显了,Easy to learn!
- 当你用上了Python之后,就会对它爱不释手,Python的程序可读性并不是其他语言可以相比的,简单的语法、没有一些奇怪的符号和长长的参数。不管是阅读别人的代码还是别人参考你的代码都变得容易,Easy communication!
- Python高效的计算能力,虽然Python的执行效率不可能比得上C、C++这种底层的语言,但是从开发时间来说,Python可是不会辜负快速开发这个称号,不然Python也不会这么受欢迎。
- 还有重要的一点是,Python可以用于解决各种各样的问题,不用为了解决某个问题而去学习新的语言和工具。Python不仅可以作为脚本语言、开发网站和软件、科学计算、爬虫等。
当然说到机器学习用的工具,除了Python不得不说的就是Matlab。Matlab具有和Python一样的易用性,在仿真和实验上比Python要好,是学术学者最喜欢用的工具,做理论研究的必备。但是在应用开发上,Matlab就显得捉襟见肘了。
虽然说Python和Matlab走的是两个不同的路子,但是如果要选一个的话,就只能是Python了,在现在学术界和产业界的联系越来越紧密,应用的生产周期越来越短的时代,Python的快速开发性就顺应了这个潮流。
讲了这么多Python的废话,还是来点干的。
1.1.2 Python机器学习库
Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy。其中Numpy是一个用python实现的科学计算包。包括:
- 一个强大的N维数组对象Array;
- 比较成熟的(广播)函数库;
- 用于整合C/C++代码的工具包;
- 实用的线性代数、傅里叶变换和随机数生成函数。
SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。其功能与软件MATLAB、Scilab和GNU Octave类似。
Numpy的项目主页http://www.numpy.org/
Scipy的项目主页http://www.scipy.org/
这两个计算库在接下来的博客也有详细介绍和教程
而Python大多数机器学习库都依赖于这两个模块,主流的机器学习库有:
- scikit-learn
scikit-learn 是一个基于SciPy和Numpy的开源机器学习模块,包括分类、回归、聚类系列算法,主要算法有SVM、逻辑回归、朴素贝叶斯、Kmeans、DBSCAN等,目前由INRI 资助,偶尔Google也资助一点。
项目主页:
https://pypi.python.org/pypi/scikit-learn/
http://scikit-learn.org/
https://github.com/scikit-learn/scikit-learn - NLTK
NLTK(Natural Language Toolkit)是Python的自然语言处理模块,包括一系列的字符处理和语言统计模型。NLTK 常用于学术研究和教学,应用的领域有语言学、认知科学、人工智能、信息检索、机器学习等。 NLTK提供超过50个语料库和词典资源,文本处理库包括分类、分词、词干提取、解析、语义推理。可稳定运行在Windows, Mac OS X和Linux平台上.
项目主页:
http://sourceforge.net/projects/nltk/
https://pypi.python.org/pypi/nltk/
http://nltk.org/ - Mlpy
Mlpy是基于NumPy/SciPy的Python机器学习模块,它是Cython的扩展应用。
项目主页:
http://sourceforge.net/projects/mlpy
https://mlpy.fbk.eu/
更多的机器学习库可通过https://pypi.python.org/pypi查找。
这是几个主流的机器学习库,当然现在更火的是深度学习,用Python编程的深度学习框架就有Theano、Keras、Lasagne和Google的开源框架Tensorflow。
绘图和可视化依赖于Matplotlib库,附上我用Matplotlib画的一张图:
再一次说明Python的流行度,哈哈!
PS: 深度学习框架以后也会介绍,还有一些个人学习的笔记,有兴趣的同学记得关注我的简书。这个系列会详细介绍scikit-learn这个应用最广泛的机器学习框架,有兴趣的同学多多支持一下。
Ref:http://www.scipy-lectures.org/intro/intro.html
Thanks for reading!