计算机视觉实践 - 街景字符编码识别/关于Task4的一些笔记

学习情况

复习了一下机器学习中的模型验证方法,因为深度学习也是机器学习的分支,这一部分还是差不多的。
最近还在看CNN的结构、公式推理过程,发现高数线代又忘了…大学的知识难道真的不能靠刷题吗…

模型验证方法

留出法

这是比较简单粗暴的方法,之前传统机器学习分类的方法是“三七分”,就是训练集70%,验证集30%。
深度学习当中比较多用的是60%训练集,20%验证集,20%测试集。
当然这种方法就比较简单,缺点就是只有一份验证集,如果在这一份验证集上多次验证,那就会过拟合:就是你的模型已经能认出这些数据(比如说一群猫和狗)是什么(是不是猫)了,这个验证准确率是虚高的,你把模型放到一堆新的数据(一群新的猫狗)中,它还是认不出来。

交叉验证法

交叉验证法分为K折交叉验证留一法交叉验证

K折交叉验证(K-fold Cross Validation)

K-Fold
就是分为K份,拿出1份当验证集,剩下的K-1份作为训练集。最后!模型的准确率是取所有验证集上的平均准确率

留一法(leave-one-out cross validation)

这个方法我没懂!和上面的K-Fold有什么区别,网上博客的叙述是这样的:

如果设原始数据有N个样本,那么每个样本单独作为验证集,其余的N-1个样本作为训练集,所以LOO-CV会得到N个模型,用这N个模型最终的验证集的分类准确率的平均数作为此下LOO-CV分类器的性能指标。

或者这样的:

留一法就是每次只留下一个样本做测试集,其它样本做训练集,如果有k个样本,则需要训练k次,测试k次。
留一法计算最繁琐,但样本利用率最高。适合于小样本的情况。

这不还是跟上面的一样吗…

自助采样法(BootStrap)

BootStrap这个名字据说是从一个神话中引用的:一个男人落入水中,然后用自己的鞋带把自己拉上了岸。

通过有放回的采样方式得到新的训练集和验证集,每次的训练集和验证集都是有区别的。这种划分方式一般适用于数据量较小的情况。

代码

之前机器学习中遇到的分类代码
留出法

# 留出法
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.2,
                                                    random_state=30)

K-Fold

from sklearn.model_selection import KFold

kf = KFold(25, n_folds=5, shuffle=False)

25表示原始数据包含25,n_folds=5就是K的值,shuffle=False表示每个样本只在训练集中或者测试集中不会相互混合
留一法

from sklearn.model_selection import LeaveOneOut

labels = LeaveOneOut(n=len(y)) # 这边label就是留出的样本数量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值