sklearn于2006年问世于Google,是使用python语言编写的、基于numpy、scipy和matplotlib的一个机器学习算法库,设计的非常优雅,它让我们能够使用同样的接口来实现所有不同的算法调用。
1、三大模块和六大功能
1.1监督学习模块
算法 | 说明 |
neighbors | 近邻算法 |
svm | 支持向量机 |
kernel-ridge | 核——岭回归 |
discriminant_analysis | 判别分析 |
linear_model | 广义线性模型 |
| |
ensemle | 集成方法 |
tree | 决策树 |
naive_bayes | 朴素贝叶斯 |
cross_decomposition | 交叉分解 |
gaussian_process | 高斯过程 |
| |
neural_network | 神经网络 |
calibration | 概率校准 |
isotonic | 保序回归 |
feature_selection | 特征选择 |
multiclass | 多类多标签算法 |
1.2非监督学习
算法 | 说明 |
decomposition | 矩阵因子分解 |
cluster | 聚类 |
manifold | 流形学习 |
mixture | 高斯混合模型 |
| |
neural_network | 无监督神经网络 |
density | 密度估计 |
covariance | 协方差估计 |
1.3数据变换
算法 | 说明 |
feature_extraction | 特征抽取 |
feature_selection | 特征选择 |
preprocess | 预处理 |
random_projection | 随机投影 |
kernel_approximation | 核逼近 |
pipline | 管道流(这个严格说不算是数据变换模块) |
1.4六大功能
功能 | 说明(算法) |
分类(Classification) | 支持向量机分类(SVC)、最近邻法(nearest neighbors)、决策树(decision tree)、随机森林(random forest)等等 |
回归(regression) | 回归、多项式回归(polynomial regression),支持向量回归(SVR)、岭回归(ridge regression)、lasso回归等等 |
聚类(clustering) | k均值(k-means)、谱聚类(spectral clustering)、mean-shift等方法 |
降维(Dimensionality reduction) | 作用是减少样本向量的维数,比如从200维降到15维,主要算法:主成分分析(PCA)、独立成分分析(ICA)等方法 |
模型选择(model selection) | 作用:评估模型,选择模型,交叉验证,调参等等,网格搜索grid search等 |
预处理(preprocessing) | 用于数据的归一化(normalization)、数据的标准化(standardization)、去均值化(mean removal)、白化(Whitening)、二值化(Binarization)等等 |
2、算法类的顶层设计
baseEstimator | 所有评估器的父类 |
ClassifierMixin | 所有分类器的父类,其子类必须实现一个score函数 |
RegressorMixin | 所有回归器的父类,其子类必须实现一个score函数 |
ClusterMixin | 所有聚类的父类,其子类必须实现一个fit_predict函数 |
BiClusterMixin |
|
TransformerMixin | 所有数据变换的父类,其子类必须实现一个fit_transform函数 |
DensityMixin | 所有密度估计相关的父类,其子类必须实现一个score函数 |
MetaEsimatorMixin | 可能是出于兼容性考虑,看名字就能知道,目前里面没有内容 |
3、统一的API接口
在sklearn里面使用完全一样的接口来实现不同的机器学习算法,通俗的流程可以理解如下:
①. 数据加载和预处理
②. 定义分类器(回归器等等),譬如svc = svm.svc()
③. 用训练集对模型进行训练,只需调用fit方法,svc.fit(X_train, y_train)
④. 用训练好的模型进行预测:y_pred=svc.predict(X_test)
⑤. 对模型进行性能评估:svc.score(X_test, y_test)
模型评估中,可以通过传入一个score参数来自定义评估标准,该函数的返回值越大代表模型越好。