入门数据挖掘 - 二手车交易价格预测(第二课堂随堂笔记)

正向传播(Forward Propagation)和反向传播(Backpropagation)是神经网络学习过程中的两个关键步骤,它们共同协作以优化网络参数,提高模型的预测性能。

正向传播


定义:

正向传播是指将输入数据通过神经网络,逐层计算并传递,最终得到预测结果的过程。


过程:

输入层:接受输入数据。
隐藏层:每个隐藏层中的神经元接收上一层的输出,进行加权求和(即线性变换),再通过激活函数(如ReLU、Sigmoid等)进行非线性变换,得到该层的输出。这个过程会重复进行,直到到达输出层。
输出层:最后一层的神经元将隐藏层的输出再次进行加权求和和激活函数处理,得到最终的预测结果。


目的:

计算模型的预测值。
反向传播


定义:

反向传播是指根据损失函数计算出的误差,通过链式法则(Chain Rule)逐层计算并更新网络中的参数(权重和偏置),以最小化误差的过程。


过程:

计算损失:使用损失函数(如均方误差MSE、交叉熵损失等)计算预测值与真实值之间的误差。
误差反向传播:从输出层开始,根据链式法则计算损失相对于每个参数的梯度。这些梯度会逐层反向传播回网络中的每一层,直到输入层。
参数更新:根据计算出的梯度,使用优化算法(如SGD、Adam等)更新网络中的参数,以减小误差。


目的:

通过梯度下降等优化算法调整网络参数,使模型的预测结果更加接近真实值。


总结
正向传播和反向传播是神经网络训练过程中不可或缺的两个步骤。
正向传播负责计算模型的预测值,而反向传播则根据预测值与真实值之间的误差来调整网络参数。
这两个过程相互依赖,共同协作,以实现神经网络的优化和训练。
通过交替进行正向传播和反向传播,神经网络可以不断学习和适应数据,提高模型的预测性能和泛化能力。

实践步骤:

一、探索性数据分析
探索性数据分析的目的,就是先对数据有个整体的把握,熟悉数据,为接下来的特征工程和 模型构造打下基础。探索性数据分析一般会从数据类型、变量的数值分布、缺失值情况和变量之间的相关关系来分析数据。首先,我们导入数据,数据是官方给定的,分为训练集和测试集两个部分。

#导入需要的包
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
from operator import itemgetter
import datetime
%matplotlib inline

#导入数据
df_train_data=pd.read_csv('used_car_train_20200313.csv',sep=' ')
df_test_data=pd.read_csv('used_car_testB_20200421.csv',sep=' ')
print(df_train_data.shape)
print(df_test_data.shape)

训练集包含150000条数据,31个变量;测试集包含50000条数据,30个变量(缺少交易价格一列)。值得注意的是,探索性数据分析是为接下来的建模做准备的,所以我们在进行探索数据分析时,只能针对训练集,不然会产生数据窥探偏误。测试集的作用是测试我们基于训练集构建的模型的泛化能力,我们的模型要完全独立于测试集进行构造。这就好比我们比赛,你不能既当球员,又当裁判。

1. 训练集数据类型和缺失值分析

#数据备份
df_train=df_train_data.copy()
#查看总体数据
df_train.head(5)


#查看训练集的变量数据类型
df_train.info()

存在缺失值的列有:model、 bodyType、 fuelType、 gearbox。唯一的有个字符串类型的变量为notRepairedDamage。

#查看唯一的字符串类型变量的数值分布
df_train['notRepairedDamage'].value_counts()

训练集各变量的数值分布

#绘制所有变量的柱形图,查看数据
df_train.hist(bins=50,figsize=(20,15))
plt.cla()  #清除axes

训练数据种分布有点异常的变量有:creatDate、offerType、seller。下面我们具体看一下这些变量数值分布:

#查看训练集中offerType变量
df_train['offerType'].value_counts()

#查看训练集seller变量
df_train['seller'].value_counts()

这些变量的数值分布可以总结为:

creatDate为汽车开始售卖时间,训练集中的数据大致在2016-03-09至2016-04-03之间(excel打开文件查看)。这个变量可以考虑减去汽车注册日期regDate,得到汽车的使用时长。汽车使用时长可能时影响汽车销售价格的一个重要变量。
训练集和测试集中,offerType变量的值全为0。在构建模型时,可以考虑去掉这个变量。
.训练集中,seller变量的值只有一个值为1,其余的都为0;而测试集中,全为0,可以考虑去掉这个变量。


3. 相关性分析
我们把字符串类型的变量、以及一些无关的变量去掉,来进行相关性分析。

#获得需要的列名
numeric_columns=df_train.select_dtypes(exclude='object').columns
columns=[col for col in numeric_columns if col not in ['SaleID', 'name', 'regDate',
                                         'regionCode','seller', 'offerType', 'creatDate']]
#根据列名提取数据
train_set=df_train[columns]


#计算各列于交易价格的相关性
corr_matrix=train_set.corr()
corr_matrix['price'].sort_values()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值