sk的API。包含了数据预处理、降维、模型的评估、分类和回归,但是没有包括聚类算法等。有待补充。入门的话这部分算法还是比较够用的了。很多API笔者还未测试、实现,只用过其中小部分的API。
一级分类 |
二级分类 |
小类 |
适用问题 |
实现 |
说明 |
分类、回归 |
1.1 广义线性模型 注:本节中所有的回归模型皆为线性回归模型 |
1.1.1 普通最小二乘法 |
回归 |
sklearn.linear_model.LinearRegression |
线性回归 |
1.1.2 Ridge/岭回归 |
回归 |
sklearn.linear_model.Ridge |
解决两类回归问题: (1)样本少于变量个数 (2)变量间存在共线性 |
||
1.1.3 Lasso |
回归 |
sklearn.linear_model.Lasso |
适合特征较少的数据 |
||
1.1.4 Multi-task Lasso |
回归 |
sklearn.linear_model.MultiTaskLasso |
y值不是一元的回归问题 |
||
1.1.5 Elastic Net |
回归 |
sklearn.linear_model.ElasticNet |
结合了Ridge和Lasso |
||
1.1.6 Multi-task Elastic Net |
回归 |
sklearn.linear_model.MultiTaskElasticNet |
y值不是一元的回归问题 |
||
1.1.7 Least Angle Regression(LARS) |
回归 |
sklearn.linear_model.Lars |
适合高维数据 |
||
1.1.8 LARS Lasso |
回归 |
sklearn.linear_model.LassoLars |
(1)适合高维数据使用 (2)LARS算法实现的lasso模型 |
||
1.1.9 Orthogonal Matching Pursuit (OMP) |
回归 |
sklearn.linear_model.OrthogonalMatchingPursuit |
基于贪心算法实现 |
||
1.1.10 贝叶斯回归 |
回归 |
sklearn.linear_model.BayesianRidge sklearn.linear_model.ARDRegression |
优点: (1)适用于手边数据 (2)可用于在估计过程中包含正规化参数 缺点: 耗时 |
||
1.1.11 Logistic regression |
分类 |
sklearn.linear_model.LogisticRegression |
|
||
1.1.12 SGD(随机梯度下降法) |
分类/回归 |
sklearn.linear_model.SGDClassifier sklearn.linear_model.SGDRegressor |
适用于大规模数据 |
||
1.1.13 Perceptron |
分类 |
sklearn.linear_model.Perceptron |
适用于大规模数据 |
||
1.1.14 Passive Aggressive Algorithms |
分类/回归 |
sklearn.linear_model.PassiveAggressiveClassifier sklearn.linear_model.PassiveAggressiveRegressor |
适用于大规模数据 |
||
1.1.15 Huber Regression |
回归 |
sklearn.linear_model.HuberRegressor |
能够处理数据中有异常值的情况 |
||
1.1.16 多项式回归 |
回归 |
sklearn.preprocessing.PolynomialFeatures |
通过PolynomialFeatures将非线性特征转化成多项式形式,再用线性模型进行处理 |
||
1.2 线性和二次判别分析 |
1.2.1 LDA |
分类/降维 |
sklearn.discriminant_analysis.LinearDiscriminantAnalysis |
|
|
1.2.2 QDA |
分类 |
sklearn.discriminant_analysis.QuadraticDiscriminantAnalysis |
|
||
1.3 核岭回归 |
1.3.1 简称KRR |
回归 |
sklearn.kernel_ridge.KernelRidge |
将核技巧应用到岭回归(1.1.2)中,以实现非线性回归 |
|
1.4 支持向量机 |
1.4.1 SVC,NuSVC,LinearSVC |
分类 |
sklearn.svm.SVC sklearn.svm.NuSVC sklearn.svm.LinearSVC |
SVC可用于非线性分类,可指定核函数; NuSVC与SVC唯一的不同是可控制支持向量的个数; LinearSVC用于线性分类 |
|
1.4.2 SVR,NuSVR,LinearSVR |
回归 |
sklearn.svm.SVR sklearn.svm.NuSVR sklearn.svm.LinearSVR |
同上,将"分类"变成"回归"即可 |
||
1.4.3 OneClassSVM |
异常检测 |
sklearn.svm.OneClassSVM |
无监督实现异常值检测 |
||
1.5 随机梯度下降 |
同1.1.12 |
|
|
|
|
1.6 最近邻 |
1.6.1 Unsupervised Nearest Neighbors |
– |
sklearn.neighbors.NearestNeighbors |
无监督实现K近邻的寻找 |
|
1.6.2 Nearest Neighbors Classification |
分类 |
sklearn.neighbors.KNeighborsClassifier sklearn.neighbors.RadiusNeighborsClassifier |
(1)不太适用于高维数据 (2)两种实现只是距离度量不一样,后者更适合非均匀的采样 |
||
1.6.3 Nearest Neighbors Regression |
回归 |
sklearn.neighbors.KNeighborsRegressor sklearn.neighbors.RadiusNeighborsRegressor |
同上 |
||
1.6.4 Nearest Centroid Classifier |
分类 |
sklearn.neighbors.NearestCentroid |
每个类对应一个质心,测试样本被分类到距离最近的质心所在的类别 |
||
1.7 高斯过程(GP/GPML) |
1.7.1 GPR |
回归 |
sklearn.gaussian_process.GaussianProcessRegressor |
与KRR一样使用了核技巧 |
|
1.7.3 GPC |
分类 |
sklearn.gaussian_process.GaussianProcessClassifier |
|
||
1.8 交叉分解 |
实现算法:CCA和PLS |
– |
– |
用来计算两个多元数据集的线性关系,当预测数据比观测数据有更多的变量时,用PLS更好 |
|
1.9 朴素贝叶斯 |
1.9.1 高斯朴素贝叶斯 |
分类 |
sklearn.naive_bayes.GaussianNB |
处理特征是连续型变量的情况 |
|
1.9.2 多项式朴素贝叶斯 |
分类 |
sklearn.naive_bayes.MultinomialNB |
最常见,要求特征是离散数据 |
||
1.9.3 伯努利朴素贝叶斯 |
分类 |
sklearn.naive_bayes.BernoulliNB |
要求特征是离散的,且为布尔类型,即true和false,或者1和0 |
||
1.10 决策树 |
1.10.1 Classification |
分类 |
sklearn.tree.DecisionTreeClassifier |
|
|
1.10.2 Regression |
回归 |
sklearn.tree.DecisionTreeRegressor |
|
||
1.11 集成方法 |
1.11.1 Bagging |
分类/回归 |
sklearn.ensemble.BaggingClassifier sklearn.ensemble.BaggingRegressor |
可以指定基学习器,默认为决策树 |
|
1.11.2 Forests of randomized trees |
分类/回归 |
RandomForest(RF,随机森林): sklearn.ensemble.RandomForestClassifier sklearn.ensemble.RandomForestRegressor ExtraTrees(RF改进): sklearn.ensemble.ExtraTreesClassifier sklearn.ensemble.ExtraTreesRegressor |
基学习器为决策树 |
||
1.11.3 AdaBoost |
分类/回归 |
sklearn.ensemble.AdaBoostClassifier sklearn.ensemble.AdaBoostRegressor |
可以指定基学习器,默认为决策树 |
||
1.11.4 Gradient Tree Boosting |
分类/回归 |
GBDT:sklearn.ensemble.GradientBoostingClassifier GBRT:sklearn.ensemble.GradientBoostingRegressor |
基学习器为决策树 |
||
1.11.5 Voting Classifier |
分类 |
sklearn.ensemble.VotingClassifier |
须指定基学习器 |
||
1.12 多类与多标签算法 |
– |
– |
– |
sklearn中的分类算法都默认支持多类分类,其中LinearSVC、 LogisticRegression和GaussianProcessClassifier在进行多类分类时需指定参数multi_class |
|
1.13 特征选择 |
1.13.1 过滤法之方差选择法 |
特征选择 |
sklearn.feature_selection.VarianceThreshold |
特征选择方法分为3种: 过滤法、包裹法和嵌入法。 过滤法不用考虑后续学习器 |
|
1.13.2 过滤法之卡方检验 |
特征选择 |
sklearn.feature_selection.SelectKBest |
|
||
1.13.3 包裹法之递归特征消除法 |
特征选择 |
sklearn.feature_selection.RFE |
包裹法需考虑后续学习器,参数中需输入基学习器 |
||
1.13.4 嵌入法 |
特征选择 |
sklearn.feature_selection.SelectFromModel |
嵌入法是过滤法和嵌入法的结合,参数中也需输入基学习器 |
||
1.14 半监督 |
1.14.1 Label Propagation |
分类/回归 |
sklearn.semi_supervised.LabelPropagation sklearn.semi_supervised.LabelSpreading |
|
|
1.15 保序回归 |
– |
回归 |
sklearn.isotonic.IsotonicRegression |
|
|
1.16 概率校准 |
– |
– |
– |
在执行分类时,获得预测的标签的概率 |
|
1.17 神经网络模型 |
- |
- |
- |
- |
|
降维 |
2.5 降维 |
2.5.1 主成分分析 |
降维 |
PCA:sklearn.decomposition.PCA IPCA:sklearn.decomposition.IncrementalPCA KPCA:sklearn.decomposition.KernelPCA SPCA:sklearn.decomposition.SparsePCA |
(1)IPCA比PCA有更好的内存效率,适合超大规模降维。 (2)KPCA可以进行非线性降维 (3)SPCA是PCA的变体,降维后返回最佳的稀疏矩阵 |
2.5.2 截断奇异值分解 |
降维 |
sklearn.decomposition.TruncatedSVD |
可以直接对scipy.sparse矩阵处理 |
||
2.5.3 字典学习 |
– |
sklearn.decomposition.SparseCoder sklearn.decomposition.DictionaryLearning |
SparseCoder实现稀疏编码,DictionaryLearning实现字典学习 |
||
模型评估与选择 |
3.1 交叉验证/CV |
3.1.1 分割训练集和测试集 |
– |
sklearn.model_selection.train_test_split |
|
3.1.2 通过交叉验证评估score |
– |
sklearn.model_selection.cross_val_score |
score对应性能度量,分类问题默认为accuracy_score,回归问题默认为r2_score |
||
3.1.3 留一法LOO |
– |
sklearn.model_selection.LeaveOneOut |
CV的特例 |
||
3.1.4 留P法LPO |
– |
sklearn.model_selection.LeavePOut |
CV的特例 |
||
3.2 调参 |
3.2.1 网格搜索 |
– |
sklearn.model_selection.GridSearchCV |
最常用的调参方法。可传入学习器、学习器参数范围、性能度量score(默认为accuracy_score或r2_score )等 |
|
3.2.2 随机搜索 |
– |
sklearn.model_selection.RandomizedSearchCV |
参数传入同上 |
||
3.3 性能度量 |
3.3.1 分类度量 |
– |
– |
对应交叉验证和调参中的score |
|
3.3.2 回归度量 |
– |
– |
|
||
3.3.3 聚类度量 |
– |
– |
|
||
3.4 模型持久性 |
– |
– |
– |
使用pickle存放模型,可以使模型不用重复训练 |
|
3.5 验证曲线 |
3.5.1 验证曲线 |
– |
sklearn.model_selection.validation_curve |
横轴为某个参数的值,纵轴为模型得分 |
|
3.5.2 学习曲线 |
– |
sklearn.model_selection.learning_curve |
横轴为训练数据大小,纵轴为模型得分 |
||
数据预处理 |
4.3 数据预处理 |
4.3.1 标准化 |
数据预处理 |
标准化: sklearn.preprocessing.scale sklearn.preprocessing.StandardScaler |
scale与StandardScaler都是将将特征转化成标准正态分布(即均值为0,方差为1),且都可以处理scipy.sparse矩阵,但一般选择后者 |
数据预处理 |
区间缩放: sklearn.preprocessing.MinMaxScaler sklearn.preprocessing.MaxAbsScale |
MinMaxScaler默认为0-1缩放,MaxAbsScaler可以处理scipy.sparse矩阵 |
|||
4.3.2 非线性转换 |
数据预处理 |
sklearn.preprocessing.QuantileTransformer |
可以更少的受异常值的影响 |
||
4.3.3 归一化 |
数据预处理 |
sklearn.preprocessing.Normalizer |
将行向量转换为单位向量,目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准 |
||
4.3.4 二值化 |
数据预处理 |
sklearn.preprocessing.Binarizer |
通过设置阈值对定量特征处理,获取布尔值 |
||
4.3.5 哑编码 |
数据预处理 |
sklearn.preprocessing.OneHotEncoder |
对定性特征编码。也可用pandas.get_dummies实现 |
||
4.3.6 缺失值计算 |
数据预处理 |
sklearn.preprocessing.Imputer |
可用三种方式填充缺失值,均值(默认)、中位数和众数。也可用pandas.fillna实现 |
||
4.3.7 多项式转换 |
数据预处理 |
sklearn.preprocessing.PolynomialFeatures |
|
||
4.3.8 自定义转换 |
数据预处理 |
sklearn.preprocessing.FunctionTransformer |
|