第二课堂笔记——阿里云天池(以二手车交易为例)

       机器学习中,常见问题包括分类问题、二分类问题和回归问题。而本题则是回归问题(即拟合数据并预测未知连续数值)。由于该问题涉及多个输入特征和维度,神经网络模型是一个不错的选择。

       在数据挖掘与机器学习的竞赛中,通常我们先写一个baseline来作出初始的模型。

       baseline一般包含以下几个部分:数据导入,数据预处理,模型选择,模型评估与训练,预测与提交,迭代与改进。

一、数据导入

       首先导入所以需要的相关库,如pandas,numpy,torch,matplotlib等。(torch下载时注意版本兼容性,系统默认下载的好像是最新版的,但它不一定匹配你的python,cuda版本)

       并打开所提供的测试集、训练集。(若所打开的文件不整齐,可能是分隔符不对,在代码中添加sep=' '让数据更整齐,若在excel中观察:发现所有数据都挤在一个单元格里,可以点击数据工具中的分列,重新制定分隔符)这里为了方便统一进行预处理,将两个数据集合并了。

二、数据预处理

1.数据清洗

打开数据表,观察数据是否有缺失值、异常值、重复数据等。

观察发现数据与题目,(1)存在列有缺失值。(有的缺失值是'-'有的是NaN所以后面还有替换)

(2)题目要求power在[0,600]。

(3)notRepaired列为字符串类型。为了后续更好处理,我们作出以下措施:

       执行后,'-'的缺失值被替换,但仍然存在其他形式的缺失值,如nan,所以,我们使用fillna()函数,将离散变量的空值替换为-1,连续变量的空值替换为0。(为什么区分离散数据和连续数据呢?因为不同数据类型会影响模型的选择与预测)

2.特征转化

       将特征转换为更适合模型训练的形式。这包括数据的无量纲化(如标准化和归一化)、二值化、多项式特征生成、独热编码等,这里我们进行了独热编码和归一化处理。

       独热编码(One-Hot Encoding)是一种处理分类数据(离散数据)的方法,它将每个类别的值转换为一个新的二进制列。在独热编码中,每个类别都被表示为一个只有在该类别出现时才为1,其余情况都为0的向量。这种方法允许算法将类别数据当作数值数据来处理,同时保留了类别之间的独立性。

3.数据划分

(1)重新划分测试集和训练集

由于前面合并了数据集,所以在这里又重新划分开了测试集和训练集。

同时又进行了一些小操作:随机打乱数据:确保模型从数据中真的提取到了特征,提高模型泛化性,而非仅仅记住了某些顺序。

(2)分离特征值

在训练集中,将price列单独分离

(3)划分验证集

在分离出的特征列中再次划分出验证集,用于评估和调整模型参数。

三、建立神经网络

  • 定义网络结构:选择合适的网络架构,包括层数、每层的节点数、激活函数等。

    (Relu:f(x)=max(0,x))


  •  
  • 初始化网络参数:随机初始化网络中的权重和偏置。

  • 定义损失函数:选择一个损失函数来评估模型的预测性能。回归问题常用损失函数有MSE(均方误差),MAE(平均绝对误差),MSLE(均方对数误差)。

  • 选择优化器:选择一个优化算法来调整网络参数,以最小化损失函数。广泛使用的是Adam和SGD。

  • 训练网络:使用训练数据迭代地训练网络,通过前向传播计算损失,然后通过反向传播更新权重。(这个没懂,不说了,大概是采用了梯度下降的方式?梯度下降思想:对于极值点而言,x=x-dy/dx,设定参数lr为‘学习率’或者‘步长’,得到:x=x-lr*dy/dx

  • 验证和测试:使用验证集和测试集评估模型的性能。利用之前导入的matplotlib可以把模拟图像化,观察模型拟合情况。

最后price就是预测的价格了

(ps:本篇只是笔记,以题目为例介绍数据分析的简单流程及一些问题,之前没学过,很多地方都没详细说,还有点一段一段的。写错了请多多包容!)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值