一个关于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)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏iOSDevLog

Python机器学习:Scikit-Learn教程

一个易于理解的scikit-learn教程,可以帮助您开始使用Python机器学习。

59150
来自专栏机器之心

学界 | 斯坦福提出神经任务编程NTP:让机器人从层级任务中学习

选自arXiv 机器之心编译 参与:朱乾树、蒋思源 斯坦福视觉与学习实验室与加州大学提出神经任务编程(NTP),它可以将指定任务作为输入,并递归地将该任务分解成...

36990
来自专栏数据科学与人工智能

【DS】Doc2Vec和Logistic回归的多类文本分类

Doc2vec是一个NLP工具,用于将文档表示为向量,是word2vec方法的推广。 为了理解doc2vec,最好理解word2vec方法。但是,完整的数学细节...

29340
来自专栏人工智能头条

手把手教你实战汉字书法识别

1.2K40
来自专栏人工智能

通过JS库Encog实现JavaScript机器学习和神经学网络

在本文中,你会对如何使用 JavaScript 实现机器学习这个话题有一些基本的了解。

1.6K100
来自专栏企鹅号快讯

机器学习系统设计03-机器学习入门应用案例

@[Markdown, 机器学习] Github源代码下载 参考书籍:《机器学习系统设计》 应用案例说明 我们有一个数据集,是一个网站每小时的web访问量,随着...

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

【Python量化投资】金融应用中用matplotlib库实现的数据可视化

Python中,matplotlib可以视为数据可视化的基准和主力。尽管有许多其他的可视化库,但是matplotlib已经确立了一个标杆,在许多情况下,它都是健...

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

谷歌最强NLP模型BERT如约开源,12小时GitHub标星破1500,即将支持中文

BERT终于来了!今天,谷歌研究团队终于在GitHub上发布了万众期待的BERT。

11720
来自专栏程序员宝库

使用 JavaScript 实现机器学习和神经学网络

英文:JeffHeaton 译文: 云+社区/白加黑大人 https://cloud.tencent.com/developer/article/103589...

393100
来自专栏量子位

谷歌最强NLP模型BERT如约开源,12小时GitHub标星破1500,即将支持中文

BERT终于来了!今天,谷歌研究团队终于在GitHub上发布了万众期待的BERT。

19030

扫码关注云+社区

领取腾讯云代金券