一 介绍

scikit-learn是Python的一个开源机器学习模块,它建立在NumPy,SciPy和matplotlib模块之上。值得一提的是,scikit-learn最先是由David Cournapeau在2007年发起的一个Google Summer of Code项目,从那时起这个项目就已经拥有很多的贡献者了,而且该项目目前为止也是由一个志愿者团队在维护着。

  scikit-learn最大的特点就是,为用户提供各种机器学习算法接口,可以让用户简单、高效地进行数据挖掘和数据分析。

  scikit-learn主页:scikit-learn homepage

二 安装

scikit-learn的安装方法有很多种,而且也是适用于各种主流操作系统,scikit-learn主页上也分别详细地介绍了在不同操作系统下的三种安装方法,具体安装详情请移步至 installing scikit-learn

三 scikit-learn载入数据

scikit-learn内包含了常用的机器学习数据集,比如做分类的irisdigit数据集,用于回归的经典数据集Boston house prices

  scikit-learn载入数据集实例:

from sklearn import datasets
iris = datasets.load_iris()

scikit-learn载入的数据集是以类似于字典的形式存放的,该对象中包含了所有有关该数据的数据信息(甚至还有参考文献)。其中的数据值统一存放在.data的成员中,比如我们要将iris数据显示出来,只需显示iris的data成员:

print (iris.data)

数据都是以n维(n个特征)矩阵形式存放和展现,iris数据中每个实例有4维特征,分别为:sepal length、sepal width、petal length和petal width。显示iris数据:

[[ 5.1  3.5  1.4  0.2]
[ 4.9 3. 1.4 0.2]
    ... ...
[ 5.9 3. 5.1 1.8]]

如果是对于监督学习,比如分类问题,数据中会包含对应的分类结果,其存在.target成员中:

print (iris.target)

对于iris数据而言,就是各个实例的分类结果:

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]

四 scikit-learn学习与预测

scikit-learn提供了各种机器学习算法的接口,允许用户可以很方便地使用。每个算法的调用就像一个黑箱,对于用户来说,我们只需要根据自己的需求,设置相应的参数。

  比如,调用最常用的支撑向量分类机(SVC):

from sklearn import svm
clf = svm.SVC(gamma=0.001, C=100.) #不希望使用默认参数,使用用户自己给定的参数
print (clf)

分类器的具体信息和参数:

SVC(C=100.0, cache_size=200, class_weight=None, coef0=0.0, degree=3,
gamma=0.001, kernel='rbf', max_iter=-1, probability=False,
random_state=None, shrinking=True, tol=0.001, verbose=False)

分类器的学习和预测可以分别利用 fit(X,Y) 和 predict(T) 来实现。

例如,将digit数据划分为训练集和测试集,前n-1个实例为训练集,最后一个为测试集(这里只是举例说明fit和predict函数的使用)。然后利用fit和predict分别完成学习和预测,代码如下:

from sklearn import datasets
from sklearn import svm
clf = svm.SVC(gamma=0.001, C=100.)
digits = datasets.load_digits()
clf.fit(digits.data[:-1], digits.target[:-1])
result=clf.predict(digits.data[-1])
print (result)

预测结果为:[8]

  我们可以通过程序来查看测试集中的手写体实例到底长什么样来简单验证一下分类效果,代码和结果如下所示:

import matplotlib.pyplot as plot
plot.figure(1, figsize=(3, 3))
plot.imshow(digits.images[-1], cmap=plot.cm.gray_r, interpolation='nearest')
plot.show()

我们可以看到,这就是一个手写的数字“8”的,实际上正确的分类也是“8”。我们通过这个简单的例子,就是为了简单的学习如何来使用scikit-learn来解决分类问题,实际上这个问题要复杂得多。(PS:学习就是循序渐进,弄懂一个例子,就会弄懂第二个,... ,然后就是第n个,最后就会形成自己的知识和理论,你就可以轻松掌握,来解决各种遇到的复杂问题。)

参考:Python机器学习 scikit-learn机器学习库

scikit-learn 机器学习库的更多相关文章

  1. Scikit Learn: 在python中机器学习

    转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...

  2. (原创)(三)机器学习笔记之Scikit Learn的线性回归模型初探

    一.Scikit Learn中使用estimator三部曲 1. 构造estimator 2. 训练模型:fit 3. 利用模型进行预测:predict 二.模型评价 模型训练好后,度量模型拟合效果的 ...

  3. (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探

    目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...

  4. 常用python机器学习库总结

    开始学习Python,之后渐渐成为我学习工作中的第一辅助脚本语言,虽然开发语言是Java,但平时的很多文本数据处理任务都交给了Python.这些年来,接触和使用了很多Python工具包,特别是在文本处 ...

  5. [Python & Machine Learning] 学习笔记之scikit-learn机器学习库

    1. scikit-learn介绍 scikit-learn是Python的一个开源机器学习模块,它建立在NumPy,SciPy和matplotlib模块之上.值得一提的是,scikit-learn最 ...

  6. [Python] 机器学习库资料汇总

    声明:以下内容转载自平行宇宙. Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: ...

  7. [resource]Python机器学习库

    reference: http://qxde01.blog.163.com/blog/static/67335744201368101922991/ Python在科学计算领域,有两个重要的扩展模块: ...

  8. 机器学习库shark安装

    经过两天的折腾,一个对c++和机器学习库的安装都一知半解的人终于在反复安装中,成功的将shark库安装好了,小小纪念一下,多亏了卡门的热心帮忙. shark的安装主要分为以下几个部分: (1)下载 s ...

  9. 《Spark 官方文档》机器学习库(MLlib)指南

    spark-2.0.2 机器学习库(MLlib)指南 MLlib是Spark的机器学习(ML)库.旨在简化机器学习的工程实践工作,并方便扩展到更大规模.MLlib由一些通用的学习算法和工具组成,包括分 ...

  10. Python机器学习库scikit-learn实践

    原文:http://blog.csdn.net/zouxy09/article/details/48903179 一.概述 机器学习算法在近几年大数据点燃的热火熏陶下已经变得被人所“熟知”,就算不懂得 ...

随机推荐

  1. 利用PowerDesigner设计数据库

    PowerDesigner非常强大, 可以利用它完成数据库的设计. 1.下载地址:http://pan.baidu.com/s/1DsLrg 2.表设计: 建立概念数据模型(Conceptual Da ...

  2. Hibernate基础(一)

    Hibernate是ORM开源组件 源码:http://sourceforge.net/projects/hibernate/ 1.Hibernate的配置文件. 默认配置文件: hibernate. ...

  3. 机器学习:偏差方差权衡(Bias Variance Trade off)

    一.什么是偏差和方差 偏差(Bias):结果偏离目标位置: 方差(Variance):数据的分布状态,数据分布越集中方差越低,越分散方差越高: 在机器学习中,实际要训练模型用来解决一个问题,问题本身可 ...

  4. 机器学习:PCA(使用梯度上升法求解数据主成分 Ⅰ )

    一.目标函数的梯度求解公式 PCA 降维的具体实现,转变为: 方案:梯度上升法优化效用函数,找到其最大值时对应的主成分 w : 效用函数中,向量 w 是变量: 在最终要求取降维后的数据集时,w 是参数 ...

  5. DCloud-5+Runtime:杂项

    ylbtech-DCloud-5+Runtime:杂项 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   7.返回顶部   8.返回顶部 ...

  6. Word中调整编号和文字的间距

    鼠标放在节文字上,不用选择该级别的所有节点,直接在某一节上右键-段落-制表位-默认制表位-设置1字符或其它.完成后该级别所有节的格式都自动调整,不用一个个调整. 但是设置其它段落格式还是需要在菜单上选 ...

  7. JavaScript中给对象添加方法

    在JavaScript中,我们经常要给已定义的对象添加一些方法,如下:    function circle(w,h){      this.width=w;      this.height=h; ...

  8. IRedisClient

    事实上,IRedisClient里面的很多方法,其实就是Redis的命令名.只要对Redis的命令熟悉一点就能够非常快速地理解和掌握这些方法,趁着现在对Redis不是特别了解,我也对着命令来了解一下这 ...

  9. volatile关键字在多线程中的作用

  10. ssh整合思想

    整合过程: