加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何正确交叉验证

发布时间:2020-12-20 13:47:13 所属栏目:Python 来源:网络整理
导读:我一直在尝试使用 Python和scikit-learn工具包训练ML分类器. 首先,我在分割数据集时应用了自己的阈值(例如int(len(X)* 0.75)),并在打印指标时得到了这个结果: precision recall f1-score support 1 0.63 0.96 0.76 23 2 0.96 0.64 0.77 36avg / total 0.83
我一直在尝试使用 Python和scikit-learn工具包训练ML分类器.

首先,我在分割数据集时应用了自己的阈值(例如int(len(X)* 0.75)),并在打印指标时得到了这个结果:

precision    recall  f1-score   support

      1       0.63      0.96      0.76        23
      2       0.96      0.64      0.77        36

avg / total   0.83      0.76      0.76        59

然后我使用交叉验证,以便使用以下方法更精确地查看模型的准确性:scores = cross_validation.cross_val_score(X,y,cv = 10)并获得以下分数:

Cross_val_scores = [0.66666667 0.79166667 0.45833333 0.70833333 0.52173913
?????????????????????0.52173913 0.47826087 0.47826087 0.52173913 0.47826087]

准确度:0.56(标准偏差:/ – 0.22),其中精度等于平均值??(分数).

有人可以建议我如何正确解释这些分数?我理解在使用交叉验证时如何分割数据集以便在整个数据集范围内观察模型的准确性,但我想知道更多.

>例如,是否有一种方法可以分割它并获得尽可能高的准确度(例如0.79166667),如果是这样我怎么能这样做?
>我想这是因为我的数据集中存在一个分裂,即使用这些数据训练的模型可以产生更接近的预测,对吗?
>有没有办法减少相对较高的标准偏差?

感谢您的时间.

解决方法

is there a way to split it and achieve the highest accuracy possible (e.g. 0.79166667) and if so how I could do that?

可能,但这只意味着通过拟合理想分割的训练部分得到的模型,在理想分割的验证部分具有很高的准确性.这称为过度拟合,即.您获得的模型仅针对特定数据进行了优化,但不会很好地概括新数据.

I imagine that happens because there is a split within my dataset that
a model when trained using those data can produce a closer prediction

是的,对该特定分裂的验证部分进行更接近的预测.

Is there a way to reduce the relatively high standard deviation?

是的,通过选择具有较小方差的模型(例如,具有少量参数的线性模型).但请注意,在这种情况下,您可能会失去预测准确性,这就是所谓的偏差 – 方差权衡.

通常,您只想查找具有良好平均交叉验证分数(mCVS)的模型.但是如果你的模型都具有相同的mCVS,那么你会选择标准偏差最小的模型.例如,在金融中,波动性和不确定性是根据锐利率选择不需要的模型,这可能类似于均值/标准.但是在胜利标准是mCVS的Kaggle比赛中,你显然想要最大化并忽略标准.

如果您担心数据集中的变化不允许您有意义地比较模型,那么您可以考虑使用不同数量的拆分并在拆分之前对数据进行混洗.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读