《python机器学习系统设计》笔记一:python机器学习入门

机器学习(数据挖掘或预测分析)

统计学


Python语言是一门完全面向对象的编程语言,在很多领域有成功的应用,为Google公司三大编程语言之一(C++,Java,Python),在数据挖掘、数据分析与处理、数据可视化、网络编程等方面,具有非常大的优势。



工作流程

(1)读取和清洗数据

(2)探索和理解输入数据

统计学和基础数学

你的数据能够更多的机器学习算法

(3)分析如何最好地将数据呈现给学习算法

特征工程

(4)选择正确的模型和学习算法

(5)正确地评估性能



相关资源

在线资源

Andrew Ng http://www.coursera.org

参考书

Christopher M.Bishop 《Pattern Recognition and Machine Learning 》

K.Murphy 《Machine Learning:A Probabilistic Perspective》

问答网站

http://metaoptimaze.com/qa

http://stats.stackexchange.com

http://stackoverflow.com

http://www.twotoreal.com

博客

http://blog.kaggle.com

John Langford  http://hunch.net  机器学习理论

 http://textanddatamining.blogspot.de  文本与数据挖掘实用方法

Edwin Chen  http://blog.echen.me

http://www.machinedlearnings.com  大数据学习

http://simplystatistics.org

http://andrewgelman.com  统计学建模

数据资源

UCI Machine Learning Repository http://archive.ics.uci.edu/ml


机器学习程序包

MDP http://mdp-toolkit.sourceforge.net  数据处理模块化工具箱

Pybrain http://pybrain.org

http://mloss.org

libsvm  http://www.csie.ntu.edu.tw/~cjlin/libsvm/  支持向量机界最牛的

WEKA  http://www.cs.waikato.ac.nz/ml/weka/  基于java的机器学习算法最全面最易用的开源软件;java的机器学习库也十分流行,主要体现在大数据下的jvm的本质和算法并行化的优势

Mallet  http://mallet.cs.umass.edu/  基于JAVA实现的机器学习库,主要用于自然语言处理方面,特色是马尔可夫模型和随机域做得好,可和WEKA互补

lucene  http://lucene.apache.org/  基于java的包括nutch,solr,hadoop,mahout等全套,是做信息检索和搜索引擎的同志们必学的开源软件了,学JAVA的必学

OpenCv  http://opencv.willowgarage.com/wiki/  最牛的开源计算机视觉库了,前途无可限量,做图像处理与模式识别的一定要用,总不能整天抱着matlab做实验和工业界脱节吧,但是有一定难度

Orange  http://orange.biolab.si/  基于c++和python接口的机器学习软件,界面漂亮,调用方便,可以同时学习C++和python,还有可视化的功能

NLTK  http://nltk.org/  python自然处理开源库,非常易用,也强大,还有几本orelly的经典教程

milk  http://pypi.python.org/pypi/milk python机器学习工具包,主要是针对监督学习,包括svm/knn/决策树

Octave  http://www.gnu.org/software/octave/  NG课上推荐使用的,类似matlab


Shark 是一个快速、模块化、功能丰富的开源 C++ 机器学习库,提供了各种机器学习相关技术,比如线性/非线性优化、基于内核学习算法、神经网络等,    Shark 依赖于Boost 和CMake

MLPACK 是一个 C++ 的机器学习库,其重点是可伸缩性、速度和易用




Python 2.7或 Python(x,y)

NumPy 1.67

SciPy 0.11

Scikit-learn 0.13    基于python的机器学习软件,代码写得非常好,而且官方的文档非常全,所有都有例子,算法也齐全,开发也活跃

matplotlib

dateutil   The dateutil module provides powerful extensions to the standard datetime module, available in Python 2.3+.

pyparsing    The pyparsing module provides a library of classes that client code uses to construct the grammar directly in Python code.




SciPy工具包

scipy.cluster、scipy.stats、scipy.interpolate、scipy.signal、scipy.constants、scipy.fftpack、scipy.integrate、scipy.io、scipy.linalg、scipy.maxentropy、scipy.ndimage、scipy.odr、scipy.optimize、scipy.sparse、scipy.special、scipy.spatial


数值计算库

NumPy为Python提供了快速的多维数组处理的能力,而SciPy则在NumPy基础上添加了众多的科学计算所需的各种工具包,有了这两个库,Python就有几乎和Matlab一样的处理数据和计算的能力了。

NumPy和SciPy官方网址: http://www.scipy.org

NumPy为Python带来了真正的多维数组功能,并且提供了丰富的函数库处理这些数组。它将常用的数学函数都进行数组化,使得这些数学函数能够直接对数组进行操作,将本来需要在Python级别进行的循环,放到C语言的运算中,明显地提高了程序的运算速度。

SciPy的核心计算部分都是一些久经考验的Fortran数值计算库,例如:

  • 线性代数使用LAPACK库
  • 快速傅立叶变换使用FFTPACK库
  • 常微分方程求解使用ODEPACK库
  • 非线性方程组求解以及最小值求解等使用MINPACK库


符号计算库
SymPy是一套进行符号数学运算的Python函数库,可以帮助我们进行公式推导,进行符号求解


界面设计
Traits库分为Traits和TraitsUI两大部分,Traits为Python添加了类型定义的功能,使用它定义的traits属性具有初始化、校验、代理、事件等诸多功能。

TraitsUI库基于Traits库,使用MVC结构快速地定义用户界面,在最简单的情况下,你甚至不需要写一句关于界面的代码,就可以通过traits属性定义获得一个可以工作的用户界面。使用TraitsUI库编写的程序自动支持wxPython和pyQt两个经典的界面库。


绘图与可视化
Chaco和matplotlib是很优秀的2D绘图库,Chaco库和Traits库紧密相连,方便制作动态交互式的图表功能。而matplotlib库则能够快速地绘制精美的图表、以多种格式输出,并且带有简单的3D绘图的功能。

matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。它的文档相当完备,并且 Gallery页面 中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。 

TVTK库在标准的VTK库之上用Traits库进行封装,如果要在Python下使用VTK,用TVTK是再好不过的选择。Mayavi2则在TVTK的基础上再添加了一套面向应用的方便工具,它既可以单独作为3D可视化程序使用,也可以快速地嵌入到用户的程序中去。(视觉化工具函式库VTK, Visualization Toolkit是一个开放源码,跨平台、支援平行处理的图形应用函式库)

此外,使用Visual库能够快速、方便地制作3D动画演示,使你的数据结果更有说服力。Visual官方网址: http://vpython.org


图像处理与计算机视觉

OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序。OpenCV提供的Python API方便我们快速实现算法,查看结果并且和其它的库进行数据交换。




scikit-learn —快速入门

http://www.cnblogs.com/daniel-D/p/3700830.html

准备

sklearn 快速入门的官方文档在这里。这个文档主要描述机器学习的概念,以及如何加载数据训练模型保存模型

这里提供另外一个更加详细的材料,这份材料基于ipython notebook,可以在浏览器里运行代码,功能强大,演示效果非常好,github下载地址。如果电脑上没有安装git,请参考这篇博客进行设置。

  • 将材料下载到本地:
    git clone [email protected]:jakevdp/sklearn_pycon2013.git
    
  • 安装 ipython-notebook
    sudo easy_install "ipython>=0.13" jinja2 "tornado>=3.1.0" pyzmq
    sudo apt-get install ipython-notebook
    
  • 打开材料
    cd PATH/TO/sklearn_pycon2013/notebook
    ipython notebook --pylab inline
    

    --pylab inline 参数可以使 notebook 在浏览器里面直接画图效果

数据

sklearn 中的数据一般存放为二维数组,形状为 [n_samples, n_feartures]。比如著名的 iris 数据集(鸢尾花)包含了三种类别的花(target),共 150 组数据(samples),每组数据由 4 个特征组成,具体来说就是:萼片的长度、萼片的宽度、花瓣的长度、花瓣的宽度。那么,iris 数据集的 data 就由 150*4 的二维数组组成。

sklearn 提供了很多数据集,一类比较小,直接打包在库中,可以通过 datasets.load_ + Tab 来查看,另一类比较大,需要下载,可以通过datasets.fetch_ + Tab 查看,下载的目录可以通过sklearn.datasets.get_data_home()查看。

更详细的信息请参考 notebook 中的 02_sklearn_data.ipynb 文件。

接口

创建一个机器学习的模型很简单:

from sklearn.linear_model import LinearRegression
model = LinearRegression()
print model

所有模型提供的接口有:

  • model.fit(): 实际上就是训练,对于监督模型来说是 fit(X, y),对于非监督模型是 fit(X)。

监督模型提供:

  • model.predict(X_new): 判别新样本
  • model.predict_proba(X_new): 某些模型可以输出概率,比如 LR,上一个输出的就是概率最大的 target
  • model.score(): 得分越高,fit 越好

非监督模型提供:

  • model.transform(): 从数据中学到新的“基空间”。
  • model.fit_transform(): 从数据中学到新的基并将这个数据按照这组“基”进行转换。

下面这个图展示了这些接口在机器学习模型中的位置:
《python机器学习系统设计》笔记一:python机器学习入门_第1张图片

更多信息请查看 ipython notebook 文档中的内容。













你可能感兴趣的:(python)