sklearn常用监督学习算法目录

K近邻

适用于小型数据集,基准模型,容易解释。不适用于高维稀疏数据,不能外推(超出训练数据集的范围进行预测)。

线性模型(最小二乘法、岭回归、Lasso回归、弹性网络、逻辑回归、线性支持向量机)

非常可靠的首选算法,适用于非常大的数据集,也适用于高维数据,可以外推。在低维空间中泛化性能可能很差(这还要看具体问题本身的特点,还可以通过扩展特征来增加线性模型的可用性)。

其中最小二乘法、岭回归、Lasso回归、弹性网络为回归器,不需要数据缩放。逻辑回归、线性支持向量机为分类器,逻辑回归如果不进行数据缩放会导致收敛较慢需要增加迭代次数,线性支持向量机需要进行数据缩放。

朴素贝叶斯(高斯朴素贝叶斯、伯努利朴素贝叶斯、多项式朴素贝叶斯)

只适用于分类问题。适用于非常大的数据集和高维数据,比线性模型速度快,精度低于线性模型。

决策树

速度很快,不需要数据缩放,可以可视化,很容易理解。不适用于高维稀疏数据,不能外推。

随机森林

几乎总是比单棵决策树的表现要好,鲁棒性很好(可以容忍训练集中有一些错误的数据),通常不需要反复调节参数就可以给出很好的结果,不需要数据缩放,不适用于高维稀疏数据,不能外推。

梯度提升机

是监督学习中最强大也最常用的模型之一。精度通常比随机森林略高,与随机森林相比,训练速度更慢,但预测速度更快,需要的内存更少,比随机森林需要更多的参数调节,不适用于高维稀疏数据,不能外推。

核支持向量机

是非常强大的模型,允许决策边界很复杂,在低维和高维数据集上的表现都很好。对于特征含义相似的中等大小(几千~几万这样的量级)的数据集很强大。需要数据缩放,对参数敏感,可以外推。

神经网络(多层感知机)

可以构建非常复杂的模型,特别是对于大型数据集而言。对于数据缩放敏感,对参数选取敏感。大型网络需要很长的训练时间。

scikit-learn中的算法实现

算法名 所属模块 分类器 回归器 主要参数(-号表示越小越模型复杂)
K近邻(KNN) neighbors KNeighborsClassifier KNeighborsRegressor -n_neighbors=5
最小二乘法 linear_model LinearRegression
岭回归 linear_model Ridge -alpha=1
Lasso回归 linear_model Lasso -alpha=1
弹性网络 linear_model ElasticNet -alpha=1, l1_ratio=0.5
逻辑回归 linear_model LogisticRegression +C=1.0
线性支持向量机 svm LinearSVC LinearSVR +C=1.0
高斯朴素贝叶斯 naive_bayes GaussianNB
伯努利朴素贝叶斯 naive_bayes BernoulliNB -alpha=1.0
多项式朴素贝叶斯 naive_bayes MultinomialNB -alpha=1.0
决策树 tree DecisionTreeClassifier DecisionTreeRegressor +max_depth
随机森林 ensemble RandomForestClassifier RandomForestRegressor +n_estimators
梯度提升机 ensemble GradientBoostingClassifier GradientBoostingRegressor +n_estimators, +learning_rate
核支持向量机 svm SVC SVR kernel=‘rbf’, +C, +gamma
多层感知机 neural_network MLPClassifier MLPRegressor solver=‘lbfgs’, -alpha, hidden_layer_sizes