1. 机器学习 & Sckii-Learn

1.1. 机器学习

机器学习分类主要有:

  • 监督学习(SupervisedLearning): 有练习题答案,可以每次做完题后跟答案对照的学习方式, 分为:
    • 分类(Classification)
    • 回归(Regression)
  • 无监督学习(UnsupervisedLearning):分为
    • 聚类(Clustering)
    • 降维(DimensionalityReduction)
  • 半监督学习(Semi-SupervisedLearning)
    • 通常应应用在标签不完整的时候

1.2. Scikit-Learn

scikit-learn,又写作sklearn,是一个开源的基于python语言的机器学习工具包。

它通过NumPy, SciPy和Matplotlib等python数值计算的库实现高效的算法应用, 并且涵盖了几乎所有主流机器学习算法。

在工程应用中,用python手写代码来从头实现一个算法的可能性非常低, 更多情况下,是分析采集到的数据, 根据数据特征选择适合的算法, 借助于工具来完成我们的任务。 在工具包中调用算法,调整算法的参数,获取需要的信息, 从而实现算法效率和效果之间的平衡。而sklearn,正是这样一个可以帮助我们高效实现算法应用的工具包。

sklearn有一个完整而丰富的官网,里面讲解了基于sklearn对所有算法的实现和简单应用, 本文主要 采用国内的官网教程翻译,并根据需要进行少许裁剪。

sklearn中常用的模块有:

  • 分类:
    • 识别某个对象属于哪个类别
    • 常用的算法有: SVM(支持向量机)、nearest neighbors(最近邻)、random forest(随机森林)
    • 常见的应用有:垃圾邮件识别、图像识别。
  • 回归:
    • 预测与对象相关联的连续值属性
    • 常见的算法有:SVR(支持向量机)、 ridge regression(岭回归)、Lasso
    • 常见的应用有:药物反应,预测股价。
  • 聚类:
    • 将相似对象自动分组
    • 常用的算法有:k-Means、 spectral clustering、mean-shift
    • 常见的应用有:客户细分,分组实验结果。
  • 降维:
    • 减少要考虑的随机变量的数量
    • 常见的算法有:PCA(主成分分析)、feature selection(特征选择)、 non-negative matrix factorization(非负矩阵分解)
    • 常见的应用有:可视化,提高效率。
  • 模型选择:
    • 比较,验证,选择参数和模型
    • 常用的模块有:grid search(网格搜索)、cross validation(交叉验证)、 metrics(度量)
    • 它的目标是通过参数调整提高精度。
  • 预处理:
    • 特征提取和归一化
    • 常用的模块有:preprocessing,feature extraction
    • 常见的应用有:把输入数据(如文本)转换为机器学习算法可用的数据。

1.3. 安装SKlearn

强烈建议使用anaconda虚拟环境学习sklearn。

anaconda自带ScikitLearn模块,可以直接使用。 如果需要升级建议手动安装,或者使用 清华源,否则速度会很慢。

其余手动安装scikit-learn的最简单方法就是使用 pip或者canda。

Scikit-learn 0.20是支持Python 2.7和Python 3.4的最后一个版本 Scikit-learn 0.21将需要Python 3.5或更高版本。

1.4. Scikit-Learn版本

以前所见教程多为0.2以前版本,自0.2版本以后改动较大,本文采用0.21以后版本作为基础版本。