Python笔记:进击机器学习(一)--概述

in #deeplearning7 years ago

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 编程排行图一张

IEEE Spectrum 2017 编程语言 Top 10

Python 的排名从去年开始就在持续上升,并跃至第一。

抛开这骄人的成绩,我们讲一讲做数据科学的刚需:

  • 获取数据
  • 操作数据
  • 可视化数据

那么Python的优势又是什么:

  1. Python存在丰富的数学计算、绘图和数据处理的工具。我们不需要复杂的编程去绘制一条曲线、计算傅里叶变换和一个基础的算法。用老外的一句话来形容就特别贴切,Don’t reinvent the wheel!
  2. Python相比起其他高级语言来说是容易上手的,没有那么多复杂的格式,只需用缩进来规整格式。相比起C、C++这些开发语言来说,高级语言的优势就明显了,Easy to learn!
  3. 当你用上了Python之后,就会对它爱不释手,Python的程序可读性并不是其他语言可以相比的,简单的语法、没有一些奇怪的符号和长长的参数。不管是阅读别人的代码还是别人参考你的代码都变得容易,Easy communication!
  4. Python高效的计算能力,虽然Python的执行效率不可能比得上C、C++这种底层的语言,但是从开发时间来说,Python可是不会辜负快速开发这个称号,不然Python也不会这么受欢迎。
  5. 还有重要的一点是,Python可以用于解决各种各样的问题,不用为了解决某个问题而去学习新的语言和工具。Python不仅可以作为脚本语言、开发网站和软件、科学计算、爬虫等。

当然说到机器学习用的工具,除了Python不得不说的就是Matlab。Matlab具有和Python一样的易用性,在仿真和实验上比Python要好,是学术学者最喜欢用的工具,做理论研究的必备。但是在应用开发上,Matlab就显得捉襟见肘了。

虽然说Python和Matlab走的是两个不同的路子,但是如果要选一个的话,就只能是Python了,在现在学术界和产业界的联系越来越紧密,应用的生产周期越来越短的时代,Python的快速开发性就顺应了这个潮流。

讲了这么多Python的废话,还是来点干的。

1.1.2 Python机器学习库

Python在科学计算领域,有两个重要的扩展模块:NumpyScipy。其中Numpy是一个用python实现的科学计算包。包括:

  • 一个强大的N维数组对象Array;
  • 比较成熟的(广播)函数库;
  • 用于整合C/C++代码的工具包;
  • 实用的线性代数、傅里叶变换和随机数生成函数。

SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。其功能与软件MATLAB、Scilab和GNU Octave类似。

Numpy的项目主页http://www.numpy.org/
Scipy的项目主页http://www.scipy.org/
这两个计算库在接下来的博客也有详细介绍和教程

而Python大多数机器学习库都依赖于这两个模块,主流的机器学习库有:

  1. 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
  2. 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/
  3. Mlpy
    Mlpy是基于NumPy/SciPy的Python机器学习模块,它是Cython的扩展应用。
      项目主页:
      http://sourceforge.net/projects/mlpy
      https://mlpy.fbk.eu/
    更多的机器学习库可通过https://pypi.python.org/pypi查找。

这是几个主流的机器学习库,当然现在更火的是深度学习,用Python编程的深度学习框架就有TheanoKerasLasagne和Google的开源框架Tensorflow

绘图和可视化依赖于Matplotlib库,附上我用Matplotlib画的一张图:

近20年O'Reilly上编程书籍的销量变化

再一次说明Python的流行度,哈哈!

PS: 深度学习框架以后也会介绍,还有一些个人学习的笔记,有兴趣的同学记得关注我的简书。这个系列会详细介绍scikit-learn这个应用最广泛的机器学习框架,有兴趣的同学多多支持一下。

Refhttp://www.scipy-lectures.org/intro/intro.html

Thanks for reading!

Coin Marketplace

STEEM 0.26
TRX 0.20
JST 0.038
BTC 96560.41
ETH 3644.15
USDT 1.00
SBD 3.81