zoukankan      html  css  js  c++  java
  • scikit-learn——快速入门

    ML sklearn快速入门

    申明:该系列博客是学习 sklearn 的笔记,内容将涵盖大部分机器学习的方法。本人微博@迅猛龙Daniel,能力有限,存在任何问题,希望共同交流。该博客采用马克飞象专业版编写,感谢开发者@GGock。

    环境:

    • ubuntu 12.04, 64 bits
    • python 2.7
    • sklearn 0.14

    好几个月没有写博客了,现在闲着有空,把 sklearn 的基本模型学一学。实际上 scikit-learn 的学习材料非常非常齐全,建议英文好的同学直接看官方文档,我这个只能算是零散的辅助材料。

    准备

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

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

    • 将材料下载到本地:
      git clone git@github.com:jakevdp/sklearn_pycon2013.git
    • 安装 ipython-notebook
      sudo easy_install "ipython>=0.13" jinja2 "tornado>=3.1.0" pyzmqsudo apt-get install ipython-notebook
    • 打开材料
      cd PATH/TO/sklearn_pycon2013/notebookipython 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 LinearRegressionmodel = 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(): 不懂。

    下面这个图展示了这些接口在机器学习模型中的位置:

  • 相关阅读:
    java 面向对象(六):类结构 方法(三) java的值传递机制
    java 面向对象(五):类结构 方法(二) 关键字:return;方法的重载;可变个数形参的方法
    java 面向对象(四):类结构 方法(一)
    java 面向对象(三):类结构 属性
    java 面向对象(二):JVM内存结构
    java 面向对象(一):类与对象
    java 基本语法(十三) 数组(六)数组的常见异常
    java 基本语法(十二) 数组(五)Arrays工具类的使用
    java 基本语法(十一) 数组(四)数组的常见算法
    java 基本语法(十) 数组(三) 二维数组
  • 原文地址:https://www.cnblogs.com/DjangoBlog/p/4206925.html
Copyright © 2011-2022 走看看