SKlearn学习

前言

近期开始学习数据分析相关知识,先从简单的sklearn入手,也是第一次写东西。如有不正确的地方敬请各位大神指正,谢谢!

交叉验证的目的

交叉验证(Cross Validation)为CV,CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set),首先用训练集对分类器进行训练,在利用验证集来测试训练得到的模型(model),,以此来做为评价分类器的性能指标。

简单的说,交叉验证的目的就是用来评估模型的泛化能力,即验证我们训练所得到的模型是否具有实用性。我们先来看看欠拟合过拟合的概念:

  1. 欠拟合:模型在训练集和测试级上的表现都较差。
  2. 过拟合:模型在训练集上的表现很好,但是在测试集上的表现较差。

根据对数据集划分方式的不同,验证策略可分为以下几种:

Hold-OUT Method

from sklearn.model_selection import train_test_split

将原始数据随机分为两组,一组做为训练集,一组做为验证集,利用训练集训练分类器,然后利用验证集验证模型。此种方法的好处的处理简单,只需随机把原始数据分为两组即可,其实严格意义来说Hold-Out Method并不能算是CV。

K-fold验证(较常用)

from sklearn.model_selection import KFold

K-折验证:将数据集分成K份,利用其中k-1份组子集作为训练集,剩下一份作为测试集。得K个模型,将这K个模型验证集的分类准确率的平均数作为此K-CV分类器的最终性能指标。
通常情况下,设置看=5或k=10,是一种较好的选择。

留一交叉验证(数据量很少的情况下使用)

from sklearn.model_selection import LeaveOneOut

每个样本单独作为验证集,其余的N-1个样本作为训练集,故LOO-CV会得到N个模型,用这N个模型最终的验证集的分类准确率的平均数作为此下LOO-CV分类器的性能指标。
当数据量较大时,因计算成本太高,不适用。

另:
留P交叉验证: LeavePOut 与 LeaveOneOut 非常相似,因为它通过从整个集合中删除 p 个样本来创建所有可能的 训练/测试集。对于 n 个样本,这产生了 {n \choose p} 个 训练-测试 对。与 LeaveOneOut 和 KFold 不同,当 p > 1 时,测试集会重叠。

计算交叉验证的性能指标

from sklearn.model_selection import cross_val_score,cross_validate # 交叉验证所需的函数

``
例:`
import numpy as np
from sklearn import svm, datasets
from sklearn.model_selection import cross_val_score

iris = datasets.load_iris()
X, y = iris.data, iris.target

clf = svm.SVC(kernel=‘linear’, C=1, random_state=0)
n_folds = 5
kf = KFold(n_folds, shuffle=True, random_state=42)
scores = cross_val_score(clf, X, y, scoring=‘precision_macro’, cv = kf)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuyunfeng_c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值