sklearn是基于numpy和scipy的一个机器学习算法库,设计的非常优雅,它让我们能够使用同样的接口来实现所有不同的算法调用。本文首先介绍下sklearn内的模块组织和算法类的顶层设计图。
库结构
(1)结构:
由图中,可以看到库的算法主要有四类:分类,回归,聚类,降维。其中:
常用的回归:线性、决策树、SVM、KNN ;集成回归:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees
常用的分类:线性、决策树、SVM、KNN,朴素贝叶斯;集成分类:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees
常用聚类:k均值(K-means)、层次聚类(Hierarchical clustering)、DBSCAN
常用降维:LinearDiscriminantAnalysis、PCA
(2)图片中隐含的操作流程:
这个流程图代表:蓝色圆圈内是判断条件,绿色方框内是可以选择的算法。你可以根据自己的数据特征和任务目标去找到一条自己的操作路线,一步步做就好了。
三大模块
监督学习(supervised learning)
1.
neighbors:近邻算法
svm:支持向量机
kernel-ridge:核——岭回归
discriminant_analysis:判别分析
linear_model:广义线性模型
2.
ensemle:集成方法
tree:决策树
naive_bayes:朴素贝叶斯
cross_decomposition:交叉分解
gaussian_process:高斯过程
3.
neural_network:神经网络
calibration:概率校准
isotonic:保序回归
feature_selection:特征选择
multiclass:多类多标签算法
无监督学习(unsupervised learning)
1.
decomposition:矩阵因子分解
cluster:聚类
manifold:流形学习
mixture:高斯混合模型
2.
neural_network:无监督神经网络
density:密度估计
covariance:协方差估计
数据变换
1.
feature_extraction:特征抽取
feature_selection:特征选择
preprocess:预处理
2.
random_projection:随机投影
kernel_approximation:核逼近
pipline:管道流(这个严格说不算是数据变换模块)
统一的API接口
在sklearn里面,我们可以使用完全一样的接口来实现不同的机器学习算法,通俗的流程可以理解如下:
数据加载和预处理
定义分类器(回归器等等),譬如svc = svm.svc()
用训练集对模型进行训练,只需调用fit方法,svc.fit(X_train, y_train)
用训练好的模型进行预测:y_pred=svc.predict(X_test)
对模型进行性能评估:svc.score(X_test, y_test)
网友评论