资源 | 你需要的Scikit-learn中文文档:步入机器学习的完美实践教程

机器之心整理

参与:思源

Scikit-learn 中文文档已经由 ApacheCN 完成校对,这对于国内机器学习用户有非常大的帮助。该文档自 2017 年 11 月初步完成校对,目前很多细节都已经得到完善。该中文文档包含了分类、回归、聚类和降维等经典机器学习任务,并提供了完整的使用教程与 API 注释。入门读者也可以借此文档与教程从实践出发进入数据科学与机器学习的领域。

中文文档地址:http://sklearn.apachecn.org

Scikit-learn 是基于 Python 的开源机器学习库,它基于 NumPy 和 SciPy 等科学计算库,并支持支持向量机、随即森林、梯度提升树、K 均值聚类等学习算法。Scikit-learn 目前主要由社区成员自发进行维护,且专注于构建机器学习领域内经广泛验证的成熟算法。

Scikit-learn 项目最早为数据科学家 David Cournapeau 于 2007 年发起的 scikits.learn 项目,且 Scikit 的名字可视为 SciPy Toolkit,即 SciPy 的第三方扩展。Scikit-learn 大部分都是由 Python 构建,但还是有很多核心算法是由 Cython 完成而实现更好的效果,例如支持向量机就是由 Cython 构建。

在监督学习部分,Scikit-learn 提供了广义线性模型、支持向量机、最近邻算法、高斯过程、朴素贝叶斯、决策树和集成方法等算法教程,同时还介绍了特征选择、随即梯度下降算法、线性与二次判别分析等在监督学习中非常重要的概念。

除了监督学习,半监督学习中的标签传播算法和无监督学习中的聚类与降维算法都有非常多的教程。此外,在模型选择中,文档教程描述了交叉验证的使用、估计器超参数的调整、模型评估方法和模型持久化概念等。

数据预处理是机器学习非常重要的部分,我们可以使用归一化等方法大大降低前向传播与学习算法的计算复杂度,也可以利用缺失值插补和特征提取等方法增加数据的有效性。以下选取了 SVM 的部分使用教程,读者可借此了解 Scikit-learn 中文文档的组织形式与基本内容,更完整的内容前查看原文档。

支持向量机 (SVMs) 可用于以下监督学习算法分类、回归和异常检测。支持向量机的优势在于:

  • 在高维空间中非常高效。
  • 即使在数据维度比样本数量大的情况下仍然有效。
  • 在决策函数(称为支持向量)中使用训练集的子集,因此它也是高效利用内存的。
  • 通用性:不同的核函数 核函数 与特定的决策函数一一对应。

支持向量机的缺点包括:

  • 如果特征数量比样本数量大得多,在选择核函数时要避免过拟合,而且正则化项是非常重要的。
  • 支持向量机不直接提供概率估计,这些都是使用昂贵的五次交叉验算计算的。

在 scikit-learn 中,支持向量机提供 dense(numpy.ndarray , 可以通过 numpy.asarray 进行转换) 和 sparse(任何 scipy.sparse)样例向量作为输出。然而,要使用支持向量机来对 sparse 数据作预测,它必须已经拟合这样的数据。使用 C 代码的 numpy.ndarray (dense) 或者带有 dtype=float64 的 scipy.sparse.csr_matrix (sparse) 来优化性能。

分类

SVC、NuSVC 和 LinearSVC 能在数据集中实现多元分类:

SVC 和 NuSVC 是相似的方法,但是接受稍许不同的参数设置并且有不同的数学方程。另一方面,LinearSVC 是另一个实现线性核函数的支持向量分类。记住 LinearSVC 不接受关键词 kernel,因为它被假设为线性的。它也缺少一些 SVC 和 NuSVC 的成员(members)比如 support_。

和其他分类器一样,SVC、NuSVC 和 LinearSVC 将两个数组作为输入:[n_samples, n_features] 大小的数组 X 作为训练样本,[n_samples] 大小的数组 y 作为类别标签 (字符串或者整数):

>>> from sklearn import svm
>>> X = [[0, 0], [1, 1]]
>>> y = [0, 1]
>>> clf = svm.SVC()
>>> clf.fit(X, y)  
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
    decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',
    max_iter=-1, probability=False, random_state=None, shrinking=True,
    tol=0.001, verbose=False)

在拟合后, 这个模型可以用来预测新的值:

>>> clf.predict([[2., 2.]])
array([1])

SVMs 决策函数取决于训练集的一些子集, 称作支持向量. 这些支持向量的部分特性可以在 support_vectors_、support_和 n_support 找到:

>>> # 获得支持向量
>>> clf.support_vectors_
array([[ 0.,  0.],
       [ 1.,  1.]])
>>> # 获得支持向量的索引get indices of support vectors
>>> clf.support_ 
array([0, 1]...)
>>> # 为每一个类别获得支持向量的数量
>>> clf.n_support_ 
array([1, 1]...)

以上是 SVM 简单的介绍,这些内容都由 ApacheCN 翻自 Scikit-learn 。最后,感谢参与翻译文档的志愿者,正因为他们,开源社区才能有如此高质量的学习资料。

本文为机器之心整理,转载请联系本公众号获得授权。

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2018-04-06

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PPV课数据科学社区

【学习】机器学习中的数据清洗与特征处理综述

背景 随着美团交易规模的逐步增大,积累下来的业务数据和交易数据越来越多,这些数据是美团做为一个团购平台最宝贵的财富。通过对这些数据的分析和挖掘,不仅能给美团业务...

43750
来自专栏机器之心

ECCV 2018 | 给Cycle-GAN加上时间约束,CMU等提出新型视频转换方法Recycle-GAN

作者:Aayush Bansal、Shugao Ma、Deva Ramanan、Yaser Sheikh

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

一个完整的机器学习项目在Python中的演练(二)

24670
来自专栏AI科技评论

选中自然语言处理任务的连续表达 | 微软IJCAI2016演讲PPT

微软研究院在IJCAI2016的Tutorial上讲述了自己将深度学习、深度神经网络应用于不同场景的情况,之前第二部分提到了深度学习在统计机器翻译和会话中的应用...

31250
来自专栏IT技术精选文摘

MILABOT:基于深度强化学习打造聊天机器人

20830
来自专栏杨熹的专栏

强化学习 8: approximate reinforcement learning

前面说过,对于骑自行车这种可能只有十个 state,四个 aciton 的小问题上面,交叉熵可以解决,但如果在自动驾驶,或者打游戏上面,它却不行,因为这时我们没...

12410
来自专栏一心无二用,本人只专注于基础图像算法的实现与优化。

水下图像增强相关算法的一个简单小结。

最近一直没有找到感兴趣的研究课题,下了几个最新的去雾的论文,随便看了下,觉得都是为了写论文而做的论文,没有什么创新性,也就没有想法去实现他们。偶尔看到了一些关...

71070
来自专栏AI研习社

传统算法和深度学习的结合和实践,解读与优化 deepfake

前言 前一段时间用于人物换脸的deepfake火爆了朋友圈,早些时候Cycle GAN就可以轻松完成换脸任务,其实换脸是计算机视觉常见的领域,比如Cycle G...

644120
来自专栏大数据文摘

手把手,74行代码实现手写数字识别

40440
来自专栏AI研习社

一文带你读懂 OCR

OCR,或光学字符识别,是最早的计算机视觉任务之一,因为在某些方面它不需要用到深度学习。因此,早在2012年深度学习热潮之前,OCR就有了各种不同的应用,有些甚...

38420

扫码关注云+社区

领取腾讯云代金券