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参数来自定义评估标准,该函数的返回值越大代表模型越好。