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 |