前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个关于Scikit-Learn的简明介绍:Python机器学习库

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

作者头像
哒呵呵
发布2018-08-06 17:42:08
7110
发布2018-08-06 17:42:08
举报
文章被收录于专栏:鸿的学习笔记鸿的学习笔记

一个关于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)决策树算法来模拟鸢尾花数据集。此数据集作为示例数据集与库一起提供并加载。用分类器拟合数据,然后对训练数据进行预测。最后,表示出分类精度和混淆矩阵。

代码语言:javascript
复制
# 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))

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

代码语言:javascript
复制
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都是此库的用户。如果一个小公司表达出了他们的使用,那么很可能有几十到数百个更大的组织使用这个库了。它拥有着良好的测试和管理版本,适合原型机和生产项目。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档