scikit-learn介绍

来源:互联网 发布:unity3d遮罩shader 编辑:程序博客网 时间:2024/05/16 17:19

  • 为什么介绍scikit-learn
    1. python实现的,而不是R,免费。
    2. 没有和别的库做过比较,但是自身的文档足够好,例子足够多。
    3. 算法足够全,至少对于我的水平。

基于上面的几个原因,在写博客的过程中,就以scikit-learn作为主线来进行学习。在学会在sklearn中如何使用的基础上,同时扩展算法原理以及基础。

  • 什么是scikit-learn

在scikit-learn官网上面(http://scikit-learn.org/)有这几句话,概括的非常精炼:


scikit-learn: Machine Learning in Python。机器学习的pythobn实现。

      1. Simple and efficient tools for data mining and data analysis。简单高效的数据挖掘和数据分析工具。
      2. Accessible to everybody, and reusable in various contexts。通用性。
      3. Built on NumPy, SciPy, and matplotlib。构建于NumPy, SciPy, and matplotlib基础上。
      4. Open source, commercially usable - BSD license。开源。
  • 主要内容
    • 按算法功能分类,分为监督学习:分类(classification)和回归(regression),以及非监督学习:聚类(clustering)。sklearn提供了很全面的算法实现,详细算法清单http://scikit-learn.org/stable/modules/classes.html。
    • 测试数据集,比如iris,boston房价等,总共10几个。
    • 数据预处理,比如二值化,正规化,特征提取。
    • 测试数据选择、测试算法以及确定参数,甚至pipeline化的支持。‘
    • 一下其他支持功能,比如评分matrix,
  • 使用sklearn进行计算的主要步骤:
    • 数据准备。需要把数据集整理为输入X[sample_count, feature_count],结果y[label_count]的格式,其中sample_count应该等于label_count。
    • [可选的降维过程],因为原始数据的维度(feature个数)比较大,所以会出现The curse of dimensionality问题,严重影响性能和算法的扩展性,所以会以降维(PCA等)或者一些原型算法(Kmeans,LASSO等,也叫shrinkage)去掉贡献度低的一些维度。
    • 学习以及预测的过程。
      • 生成一个算法的预测器Estimator,同时可以自己设置参数,比如KNeighborsClassifier。
      • 调用该预测器的fit(X,y)函数对输入数据+结果label进行学习,从中会得到学习的结果,即分类器的各种参数。
      • 对未知数据进行预测,predict(unknown_X)。
    • 反复学习的过程。仅仅使用一个预测器,或者使用一个预测器的一种参数,对未知数据进行预测可能会有不准确性,所以会使用多种策略:
      • 把已知的数据分为多份进行多次计算,常用的是k-fold,k-label-fold, leave-1, leave-1-lable等
      • 多个预测器进行预测,或者独立进行预测,或者组合预测(Ensemble)
      • 对一个预测器设置不同的参数进行多次进行预测,同时把数据分组。基本上每一种分类器都有cross validation(交叉验证)版本,即把预测器加上cv,比如LassoCV。
  • 应用
    • 如果要把sklearn应用于自己的数据,预处理(特征选取,正规化,数据格式化等)是其中最关键的一步,没有之一,所以在sklearn之外的特征工程是必须的。
    • 任何的机器学习算法在工业界应用都避不开一个性能问题。sklearn提供了一些建议。
2 0