Python机器学习(sklearn)——分类模型评估与调参总结(上)

浏览: 18411

1. 如果只划分测试集和训练集    经验是75%作为训练集

sklearn中的train_test_split()默认这样划分

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split()


2.  通常使用sklearn中的score方法计算结果的精度(正确预测比例)


3. KNN算法有两个重要参数:邻居个数和数据点之间距离的度量方法

在实践中,选择较小的邻居个数(例如3或5个)效果较好,sklearn中默认使用欧氏距离

构建KNN模型速度很快,若训练集很大(特征数多或样本数多),预测速度可能较慢

对于稀疏数据集(大多数特征值为0),KNN效果很不好


4.普通最小二乘法,即要求预测值和真实值均方误差最小

均方误差为预测值和真实值只差的平方和除以样本数


5.训练集和测试集之间的分数差异是过拟合的明显标志

例如,训练集0.95   测试集0.61


6.线性回归防止过拟合可以采用岭回归(L2正则化)

from sklearn,linear_model import Ridge

ridge = Ridge().fit(X_train,y_train)

线性回归中的score为R^2

岭回归的结果,训练集分数可能低于线性回归,但测试集分数一般高于线性回归

默认岭回归的alpha = 1.0

岭回归惩罚了系数的L2范数或w的欧式长度

增大alpha会使得各个系数wi更加趋向0,从而提高泛化性能

可以比较alpha为10 和 0.1的scores

当岭回归alpha = 0时,即线性回归


7. 学习曲线:回归问题中,横轴为训练集大小,纵轴为score(R^2),绘制训练集和测试集曲线


8. 如果有足够多的数据,正则化就不太重要了


9.线性回归防止过拟合可以采用Lasso回归(L1正则化)

因为Lasso会使得部分特征的系数(w)为0,所以相当于做特征筛选

只呈现重要的特征

from sklearn,linear_model import Lasso

ridge = Lasso().fit(X_train,y_train)

默认的alpha = 1

可能会欠拟合(训练集和测试集的score都不高)

我们此时应该减小alpha,增大max_iter(运行迭代的最大次数)

from sklearn,linear_model import Lasso

ridge = Lasso(alpha = 0.1,max_iter = 100000).fit(X_train,y_train)

如果alpha太小,则可能过拟合,即与线性回归效果相似


10. Lasso回归和岭回归一般会首选后者

如果特征很多,认为只有几个是重要的,则选择Lasso

如果为了模型的可解释性,选择Lasso(因为类似特征选择)


11.sklearn中逻辑回归和线性支持向量机都默认使用L2正则化

若换为L1正则化:

LogisticRegression(penalty = "l1").fit(X_train,y_train)

使用参数C表示正则化强度,C越小,正则化越强。

默认C=1

LogisticRegression(C=100).fit(X_train,y_train)

有时训练集测试集分数都很高,但是分数接近,可能是欠拟合

此时增大C,使正则化减弱看看结果分数


12.线性模型训练速度非常快,预测速度也很快,适合在大数据集上使用,也适合稀疏数据


13.朴素贝叶斯分类器速度更快(相比于线性分类器逻辑斯特回归和线性支持向量机)

但是其泛化能力比线性分类器差


14.sklearn中提供三种朴素贝叶斯分类器

GaussianNB课用于任意连续数据

BernoulliNB假定输入数据为二分类数据

MultinomialNB假定输入的数据为计数数据(即每个特征代表某个对象的整数计数,比如一个单词在句中出现的次数)

后两个主要用于文本分类


15.决策树也可用于回归任务,预测时基于每个节点的测试对树进行遍历,最终找到新数据点所属的叶节点

这一数据点的输出即为此叶节点中所有训练点的平均目标值。


16. 决策树可以采用预剪枝和后剪枝来防止过拟合

sklearn中只实现了预剪枝

预剪枝限制条件可以包括

限制树的最大深度

限制叶节点的最大数目

规定一个节点中数据点的最小数目防止继续划分


17.决策树graphviz可视化图中的samples给出该节点中的样本数

values给出每个类别的样本数


18.特征重要性指标可以看决策树的特征重要性,每个特征值介于0和1之间

tree.feature_importance_

且加和为1

0表示特征没用到

1表示完美预测目标值


19.决策树回归不能外推,也不能在训练数据范围之外进行预测


20. 决策树优点:

(1)较小的树模型可视化容易,容易解释理解

(2)算法不受数据缩放影响(因为每个特征单独处理),特征不需要预处理(归一化 标准化)

特别是特征尺度大小相差大或者二元特征和连续特征同时存在时

决策树缺点:

既使预剪枝,也经常过拟合,泛化能力差,所以大多数情况采用集成模型代替单棵决策树。


参考文献:Introduction to Machine Learning with Python

推荐 5
本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

2 个评论

还是不了解正则化啥意思
正则化就是对模型施加惩罚,限制模型的参数个数等,使模型向着更简单的方向去发展,最后与训练(使模型向复杂的方向发展)结果相平衡,可以使得模型不至于太复杂而学习到训练数据中的噪声,从而获得更好的泛华能力。

要回复文章请先登录注册