专栏首页鸿的学习笔记一个关于Scikit-Learn的简明介绍:Python机器学习库

一个关于Scikit-Learn的简明介绍:Python机器学习库

一个关于Scikit-Learn的简明介绍:Python机器学习库

如果你是一个Python程序员,或者你正在寻找一个牛逼的库,使你可以应用机器学习到生产系统上,那么你会要认真考虑的库就是scikit-learn。在这篇文章中,你会得到一个scikit-learn库的概述和有用的参考。

它从哪里来?

Scikit-learn最初是由David Cournapeau在2007年的Google夏季代码项目开发的。

后来MatthieuBrucher加入了这个项目,并开始使用它作为他的论文工作的一部分。 2010年,INDIA参与其中,随后第一个公开(v0.1 beta)的版本于2010年1月下旬发布。

该项目现在有这超过30个的积极贡献者,并已经有来自INRIA,Google,Tinyclues和Python软件基金会为其捐赠。

什么是scikit-learn?

Scikit-learn通过Python中的统一接口提供了一系列监督和非监督学习算法。它根据许可的已简化BSD许可证进行授权,并分布在许多Linux发行版下,鼓励学术和商业使用。该库基于必须安装的SciPy(Scientific Python),然后才能使用scikit-learn。 这个堆栈包括:

  • NumPy: Base n-dimensional array package
  • SciPy: Fundamental library for scientific computing
  • Matplotlib: Comprehensive 2D/3D plotting
  • IPython: Enhanced interactive console
  • Sympy: Symbolic mathematics
  • Pandas: Data structures and analysis

用于SciPy的扩展或模块通常命名为SciKits。 因此,这个模块提供学习算法,并被命名为scikit-learn。这个库的愿景是拥有可在生产系统中应用的健壮程度和支持水平。这意味着要深入研究诸如易于使用,代码质量,协作,文档和性能等问题。

尽管接口是Python,但c库对用于数组和矩阵操作的numpy,LAPACK,LibSVM和不常使用的cython等性能都有影响。

有什么特点呢?

该库专注于数据建模。它不关心加载,操作和汇总数据。有关这些功能,请参阅NumPy和Pandas。

Scikit-learn提供的一些受欢迎的模型包括:

  • Clustering(聚类): 使用KMeans等技术聚类未标签数据.
  • Cross Validation(交叉验证): 估测监督模型下不可见数据的表示.
  • Datasets(数据集): 用于测试数据集和用于生成具有判别模型行为的特定属性的数据集.
  • Dimensionality Reduction(降维): 用于减少集合,可视化和特征选择(如主成分分析)的数据中的特征数量.
  • Ensemble methods(集合方法): 用于组合多个监督模型的预测.
  • Feature extraction(特征抽取): 用于定义图像和文本数据中的属性.
  • Feature selection(特征选择): 用于识别为创建监督模型的有意义的属性。
  • Parameter Tuning(参数调节): 获得最大输出的监督模型
  • Manifold Learning(流形学习): 用于总结和描述复杂的多维数据。
  • Supervised Models(监督学习):繁多的数组有着并不限于广义线性模型,判别分析,朴素贝叶斯,lazy方法,神经网络,支持向量机和决策树。

样例:分类和回归树

我想给你一个例子,告诉你使用这库有多么容易。在这个例子中,我们使用分类和回归(CART)决策树算法来模拟鸢尾花数据集。此数据集作为示例数据集与库一起提供并加载。用分类器拟合数据,然后对训练数据进行预测。最后,表示出分类精度和混淆矩阵。

# Sample Decision Tree Classifier

from sklearn import datasets

from sklearn import metrics

from sklearn.tree import DecisionTreeClassifier

# load the iris datasets

dataset = datasets.load_iris()

# fit a CART model to the data

model = DecisionTreeClassifier()

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

print(model)

# make predictions

expected = dataset.target

predicted = model.predict(dataset.data)

# summarize the fit of the model

print(metrics.classification_report(expected,  predicted))

print(metrics.confusion_matrix(expected, predicted))

运行此程序会生成以下输出,显示出已训练模型的详细信息。

DecisionTreeClassifier(class_weight=None,  criterion='gini', max_depth=None,

            max_features=None,  max_leaf_nodes=None, min_samples_leaf=1,

            min_samples_split=2,  min_weight_fraction_leaf=0.0,

            presort=False,  random_state=None, splitter='best')

              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]]

谁在使用它?

scikit-learn评价页面列出了Inria,Mendeley,wise.io,Evernote,TelecomParisTech和AWeber都是此库的用户。如果一个小公司表达出了他们的使用,那么很可能有几十到数百个更大的组织使用这个库了。它拥有着良好的测试和管理版本,适合原型机和生产项目。

本文分享自微信公众号 - 鸿的学习笔记(shujuxuexizhilu),作者:鸿

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-11-09

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Understanding Convolution in Deep Learning(二)

    我们现在有一个非常好的直觉,卷积是什么,以及卷积网中发生了什么,为什么卷积网络是如此强大。 但我们可以深入了解卷积运算中真正发生的事情。我们将看到计算卷积的原始...

    哒呵呵
  • python的字典和集合

    dict类型可以说是python里模块的命名空间,实例的属性,函数的关键字参数都有其的参与。

    哒呵呵
  • 数据仓库体系梳理

    数据仓库的分层设计是为了实现数据仓库的高性能、低成本、高效率、高质量使用。而且分层设计后会带来如下好处:

    哒呵呵
  • App安装来源追踪方法介绍

    众所周知,国内的应用商店存在一定的限制,开发者很难有效监测到App安装来源的精准数据。但在实际推广中,广告效果、用户行为、付费统计、邀请关系等不同渠道的指标却是...

    走在河边的小鹿
  • pytest文档48-切换环境(pytest-base-url)

    当我们自动化代码写完成之后,期望能在不同的环境测试,这时候应该把 base_url 单独拿出来,能通过配置文件和支持命令行参数执行。 pytest-base-u...

    上海-悠悠
  • macOS 应用注入开发简介与实践

    本文主要介绍的是动态链接库注入的相关实践,这不仅仅局限于macOS,同时对iOS应用也具有相同的效果,希望大家可以借鉴使用.

    代码行者
  • Redis缓存Java对象使用Fastjson序列化Json字符串报ClassCastException

        项目基础框架为:springboot2.x,mybatis(redis作为二级缓存)    

    尚浩宇
  • Kettle工具——Spoon、Kitchen、Pan、Carte

    Spoon是Kettle的集成开发环境(IDE)。它基于SWT提供了图形化的用户接口,主要用于ETL的设计。 在Kettle安装目录下,有启动Spoon的脚本...

    用户1148526
  • HTML初识

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

    DannyHoo
  • TensorFlow 上手实战,就看这篇!

    所谓结构化是指具有表结构,这篇文章演示如何使用 TensorFlow 求解此类问题,文章背景:titanic 数据集的目标是根据乘客信息预测他们在Titanic...

    龙哥

扫码关注云+社区

领取腾讯云代金券