Python机器学习工具:Scikit-Learn介绍与实践

Scikit-learn 简介 官方的解释很简单: Machine Learning in Python, 用python来玩机器学习。

什么是机器学习 机器学习关注的是:计算机程序如何随着经验积累自动提高性能。而最大的吸引力在于,不需要写任何与问题相关的特定代码,泛型算法就能告诉你一些关于数据的秘密。

Scikit-learn的优点 1、构建于现有的NumPy(基础n维数组包),SciPy(科学计算基础包), matplotlib(全面的2D/3D画图),IPython(加强的交互解释器),Sympy(Symbolic mathematics), Pandas(数据结构和分析)之上,做了易用性的封装。 2、简单且高效的数据挖掘、数据分析的工具。 3、对所有人开放,且在很多场景易于复用。 4、BSD证书下开源。

Scikit-learn的生态 Python python是一门简单易学的语言,语法要素不多,对于只关心机器学习本身非软件开发的人员,python语言层面的东西基本是不需要关心的。

Jupyter http://nbviewer.jupyter.org/ 提供了一种便利的方式去共享自己或是别人的计算成果,以一种之前单单共享代码不同的交互的方式。scikit-learn官网上面大量的例子也是以这种方式展示,使用者不仅看到了代码的使用方式,还看到了代码的结果,如果自己搭建了jupyter server的话,导入notebook还可以直接在浏览器中在其中上下文任意处修改,大大增加了学习效率。

Scikit-learn 的主要内容 Scikit-learn的算法地图

按照上图 scikit-learn提供的主要功能主要关注与数据建模,而非加载、操作、总结数据,这些任务可能NumPy、Pandas就已经足够了。为此scikit-learn 主要提供了以下功能:

1、测试数据集,sklearn.datasets模块提供了乳腺癌、kddcup 99、iris、加州房价等诸多开源的数据集 2、降维(Dimensionality Reduction):为了特征筛选、统计可视化来减少属性的数量。 3、特征提取(Feature extraction): 定义文件或者图片中的属性。 4、特征筛选(Feature selection): 为了建立监督学习模型而识别出有真实关系的属性。 5、按算法功能分类,分为监督学习:分类(classification)和回归(regression),以及非监督学习:聚类(clustering)。sklearn提供了很全面的算法实现,详细算法清单http://scikit-learn.org/stable/modules/classes.html。 6、聚类(Clustring):使用KMeans之类的算法去给未标记的数据分类。 7、交叉验证(Cross Validation):去评估监督学习模型的性能。 8、参数调优(Parameter Tuning):去调整监督学习模型的参数以获得最大效果。 9、流型计算(Manifold Learning):去统计和描绘多维度的数据

常用算法的大致介绍

分类 Classification

1、适用范围:用作训练预测已经标记的数据集的类别. 监督学习的代表。 2、常用算法对比

3、文章测试了179种分类模型在UCI所有的121个数据上的性能,发现Random Forests 和 SVM 性能最好。

回归 Regression

1、适用范围: 回归是用于估计两种变量之间关系的统计过程,回归分析可以帮助我们理解当任意一个自变量变化,另一个自变量不变时,因变量变化的典型值。 最常见的是,回归分析能在给定自变量的条件下估计出因变量的条件期望。 (举个例子,在二维的坐标系中,根据已有的坐标点去推导x、y轴的函数关系,既一元n次方程。)

2、常用算法对比:

优点:直接、快速,知名度高 缺点:要求严格的假设,需要处理异常值

集成算法 Ensemble Algorithms

上图是单独用决策树来做回归任务去预测数据,但是反映了决策树虽然易于解释理解之外会有一些预测上的缺点,总结而言是趋向过拟合,可能或陷于局部最小值中、没有在线学习,所以下图引入了AdaBoost集成算法来增加预测的可靠性,由此引出了集成算法的优点:

1、集成方法是由多个较弱的模型集成模型组,其中的模型可以单独进行训练,并且它们的预测能以某种方式结合起来去做出一个总体预测。 2、当先最先进的预测几乎都使用了算法集成。它比使用单个模型预测出来的结果要精确的多。

但是如何找出可结合的弱模型、以及结合的方式又称为了繁重的维护工作。

聚类 Clustering

1、适用范围: 是在没有标记的情况下去分类数据,使数据变得有意义, 如果已知分类分类的个数,Kmeans算法会更容易得出效果。

2、常用算法对比:

该图中颜色是聚类的结果,而非标记, 各算法的分类结果都可以根据输入参数调优,只是为了展示聚类的适用范围适合有特征的数据类型,对于最下一行的几乎均匀的数据几乎没有任何意义。

Scikit-learn进行计算的主要步骤

1、数据获取、预处理。 2、可选的降维过程.因为原始数据的维度比较大, 所以需要先找出真正跟预测目标相关的属性。 3、学习以及预测的过程。 4、反复学习的过程。增加样本、调优参数、换算法各种方式去提供预测的准确率。

Scikit-learn 的简单使用示例

决策树示例:

from sklearn import datasets

  from sklearn import metrics

  from sklearn.tree import DecisionTreeClassifier

    # 读取 iris 数据集

  dataset = datasets.load_iris()

    # 采用CART模型

  model = DecisionTreeClassifier()

  model.fit(dataset.data, dataset.target)

  print(model)

    # 预测

  expected = dataset.target

  predicted = model.predict(dataset.data)

    # 统计

  print(metrics.classification_report(expected, predicted))

  print(metrics.confusion_matrix(expected, predicted))

输出: ` precision recall f1-score support 0 1.00 1.00 1.00 50 1 1.00 1.00 1.00 50 2 1.00 1.00 1.00 50 avg / total 1.00 1.00 1.00 150 [[50 0 0] [ 0 50 0] [ 0 0 50]]

引用

Quick Start Tutorial:http://scikit-learn.org/stable/tutorial/basic/tutorial.html User Guide:http://scikit-learn.org/stable/user_guide.html API Reference:http://scikit-learn.org/stable/modules/classes.html Example Gallery:http://scikit-learn.org/stable/auto_examples/index.html Scikit-learn: Machine Learning in Python:http://jmlr.org/papers/v12/pedregosa11a.html API design for machine learning software: experiences from the scikit-learn project: http://arxiv.org/abs/1309.0238

本文为上海岂安信息科技有限公司为Python中文社区独家供稿,未经允许和授权禁止转载,投稿邮箱:pythonpost@163.com。 作者:toyld

原文发布于微信公众号 - Python中文社区(python-china)

原文发表时间:2017-03-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

通过简单代码回顾卷积块

我会努力定期去阅读机器学习和人工智能相关的论文。这也是能够持续跟进最新进展的唯一途径。作为一名计算机科学家,我经常在翻阅科学描述文本或者公式的数学符号时碰壁。我...

14940
来自专栏人工智能头条

放弃 RNN/LSTM 吧,因为真的不好用!望周知~

28360
来自专栏机器学习算法工程师

机器学习论文笔记—如何利用高效的搜索算法来搜索网络的拓扑结构

分层表示高效的架构搜索(HIERARCHICAL REPRESENTATIONS FOR EFFICIENT ARCHITECTURE SEARCH)这篇文章讲...

18420
来自专栏智能算法

10 种机器学习算法的要点(附 Python 和 R 代码)

本文由 伯乐在线 - Agatha 翻译,唐尤华 校稿。 英文出处:SUNIL RAY。欢迎加入翻译组。 前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和...

46550
来自专栏量化投资与机器学习

【Matlab量化投资】支持向量机择时策略

推出【Matlab量化投资系列】 机器学习 所谓机器学习,其实就是根据样本数据寻找规律,然后再利用这些规律来预测未来的数据(结果)。 但是,直到今天,机器学习...

29460
来自专栏磐创AI技术团队的专栏

谷歌发布迄今最大注释图像数据集,190万图像目标检测挑战赛启动

18630
来自专栏AI研习社

利用摇滚乐队学习TensorFlow,Word2Vec模型和TSNE算法

学习“TensorFlow方式”来构建神经网络似乎是开始机器学习的一大障碍。在本教程中,我们将一步一步地介绍使用Kaggle的Pitchfork数据构建Band...

17620
来自专栏大数据文摘

论文Express | 自然语言十项全能:转化为问答的多任务学习

Salesforce最新论文提出了一个可处理多项自然语言处理的通用模型:decaNLP,处理机器翻译、文本分类等NLP任务统统不在话下!

14920
来自专栏机器之心

专栏 | 为模型减减肥:谈谈移动/嵌入式端的深度学习

机器之心专栏 作者:李飞 本文为机器之心矽说专栏系列文章之一,对模型压缩进行了深度解读。 1. 为什么要为深度学习模型减肥 随着深度学习的发展,神经网络模...

44480
来自专栏计算机视觉战队

结合人类视觉注意力进行图像分类

注:昨天推送发现内容有一个严重错误,所以临时删除了文章的链接,希望关注的您能够谅解,我们也是希望推送最完整最准确的内容,谢谢您的支持与关注,谢谢! 好久没有和大...

89160

扫码关注云+社区

领取腾讯云代金券