一周时间,终于算是完成了这个实战项目,这篇文章分为上下,上篇主要是沐神的思路与自己踩的坑;下篇是代码与各种注释。大家可以两篇对照着阅读。(因为自己基础薄弱,代码篇很多都是为了理解,将某行代码拆开成多行,方便理解)
李沐kaggle视频链接:
15 实战:Kaggle房价预测 + 课程竞赛:加州2020年房价预测【动手学深度学习v2】_哔哩哔哩_bilibili
李沐kaggle代码链接:
4.10. 实战Kaggle比赛:预测房价 — 动手学深度学习 2.0.0 documentation (d2l.ai)
李沐kaggle比赛链接:
House Prices - Advanced Regression Techniques | Kaggle
1.沐神的思路与知识点
如果有理解的话,不妨回答这些问题或者是扩充这些问题,部分答案都在下篇的代码注释中
0.导入相关函数库
1.接收数据与初始化数据
1.0 在该竞赛中数据集如何划分
1.1 如何接受数据
1.2 如何对字符数据与非字符数据进行处理
1.3 如何对非字符型数据进行初始化
1.4 DataFrame,Numpy,Tensor类型的区别与运用场景
2.定义损失函数,定义模型,定义优化器
2.0 如何定义损失函数(既为什么使用相对误差作为损失函数)
2.1 如何定义训练模型
2.2 如何定义优化器
3.训练模型并调整参数
3.1 k折交叉验证是什么,有什么用,在这里又是如何使用的(和1.0相关)
4.预测函数
4.1 如何生成预测的数据文件(与1.4相关)
4.2 kaggle竞赛流程是什么样的
K折交叉验证
要明白两点:
1.训练模型的过程为:
选定模型->选定超参数->选定最终模型
2.数据集的划分为:
训练集->测试集->验证集
K折交叉验证目的:选定超参数
评估标准:每个超参数对应的平均准确率
如何应用:
1.K折交叉验证是通过对折训练集 将训练集分为训练集与测试集从而验证 训练后 使用验证集获得数据对应
2.数据开始就被分为训练集 测试集 验证集 然后使用
超参数定义:https://www.bilibili.com/video/BV1GQ4y1P7Tv/?spm_id_from=333.337.search-card.all.click&vd_source=302f06b1d8c88e3138547635c3f4de52
这里需要搞懂的是准确率定义,可以自行百度
2.部分坑(这可以与代码篇对应都可以找到解决方式)
1.务必让训练集与测试集合并到一起初始化,有两点好处
1.1 在做标准化变化时,训练集与测试集使用统一的初始化标准
1.2 在包含字符串类型的数据时,因训练集与数据集在该类型的值可能不相同,分开初始化导致训练集与测试集列数与列名都不相同
2.在初始化过程与模型训练过程中,训练集中的训练标签必须去掉,不然会有以下两点坏处:
2.1 训练模型本身是通过得到合适的训练标签,来确定模型本身,如果训练标签一开始就存在,就会因为直接得到正确结果,而无法确定训练模型
2.2 在初始话过程中,一般不带上标签,因为如果标签应该是我们希望得到的真实值,如果标准化后,预测的标签就会是标准化后的真实值。与我们想要的结果不对应。
3.在处理字符型时,不要忘记把false,true改为数字型1,0(这里之所以是坑,因为貌似沐神的代码没有写出这一步)