- 选择合适的模型,对于在实践中成功应用机器学习模型是很重要的。关于何时使用哪种模型,下面是一份快速总结。
最近邻
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
from sklearn.neighbors import KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors=3)
clf.fit(X_train, y_train)
print("Test set predictions: {}".format(clf.predict(X_test)))
print("Test set accuracy: {:.2f}".format(clf.score(X_test, y_test)))
适用于小型数据集,是很好的基准模型,很容易解释。
线性模型
from sklearn.linear_model import LinearRegression
非常可靠的首选算法,适用于非常大的数据集,也适用于高维数据。
朴素贝叶斯
from sklearn.naive_bayes import GaussianNB
只适用于分类问题。比线性模型速度还快,适用于非常大的数据集和高维数据。精度通常要低于线性模型。
决策树
from sklearn import tree
速度很快,不需要数据缩放,可以可视化,很容易解释。
随机森林
from sklearn.tree import DecisionTreeClassifier
几乎总是比单棵决策树的表现要好,鲁棒性很好,非常强大。不需要数据缩放。不适用于高维稀疏数据。
梯度提升决策树
from sklearn.ensemble import GradientBoostingRegressor
精度通常比随机森林略高。与随机森林相比,训练速度更慢,但预测速度更快,需要的内存也更少。比随机森林需要更多的参数调节。
支持向量机
from sklearn.svm import LinearSVC
对于特征含义相似的中等大小的数据集很强大。需要数据缩放,对参数敏感。
神经网络
from sklearn.neural_network import MLPClassifier
可以构建非常复杂的模型,特别是对于大型数据集而言。对数据缩放敏感,对参数选取敏感。大型网络需要很长的训练时间。