首页 > 其他分享 >二手车交易预测模型笔记

二手车交易预测模型笔记

时间:2024-07-29 11:17:08浏览次数:11  
标签:Tensor 二手车 模型 DataFrame PyTorch 笔记 data col 函数

一、梯度下降法
梯度下降法就是一种通过求目标函数的导数来寻找目标函数最小化的方法。梯度下降目的是找到目标函数最小化时的取值所对应的自变量的值,目的是为了找自变量X。
梯度:是一个矢量,其方向上的方向导数最大(意味着在这个方向上,函数的值增加最快。从图形上看,就是函数图形在某点最“陡峭”的方向)。其大小正好是此点的最大方向导数。
梯度下降算法用下山来类比就是,以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着山的高度下降的方向走,然后每走一段距离,都反复采用同一个方法,最后就能成功的抵达山谷。
学习率决定了模型在每一次迭代中沿着梯度下降(或上升,对于最大化问题)方向更新参数的幅度。
学习率的重要性:
过大:如果学习率设置得太大,模型在训练过程中可能会跳过最优解,导致训练过程中的损失值在最优解附近波动,甚至发散,无法收敛。
过小:如果学习率设置得太小,虽然模型最终能够收敛到最优解附近,但训练过程会非常缓慢,需要更多的迭代次数,增加了计算成本和时间成本。
适中:选择合适的学习率可以让模型在合理的时间内快速且稳定地收敛到最优解附近。

二、特征缩放(归一化):提升模型精度(消除不同量纲)
例如:
假设用神经网络来学习这份数据,那么就会导致取值范围更大的薪水会主导模型的训练,也就是模型会偏向于薪水,但通常我们不希望我们的算法一开始就偏向于某个特征,因此要对数据做归一化处理。
下面是课程中出现的两种归一化操作
归一化处理方法一:
归一化处理方法二: data[col] = (data[col]-data[col].min()) /、(data[col].max()-data[col].min())
三、Relu激活函数:将所有的负值置为0,而正值保持不变,从而引入非线性因素,模拟复杂的神经网络。

四、损失函数(Mseloss)

五、onehot编码处理(将分类变量转换为机器学习算法可以处理的数值形式)
定义One-Hot编码函数
def oneHotEncode(df, colNames):

1. df: 一个pandas DataFrame,包含要进行One-Hot编码的列。

2. colNames: 一个列表,包含要进行One-Hot编码的列名。

for col in colNames:
    dummies = pd.get_dummies(df[col], prefix=col)

使用pandas的get_dummies函数对指定列进行One-Hot编码。这里,prefix参数用于为生成的虚拟列添加前缀,以便更容易地识别它们来自哪个原始列。

df = pd.concat([df, dummies],axis=1)

使用pandas的concat函数将原始DataFrame和编码后的虚拟列(dummies)沿着列方向(axis=1)连接起来。这会在原始DataFrame的右侧添加新的虚拟列。

df.drop([col], axis=1, inplace=True)

从原始DataFrame中删除已经进行One-Hot编码的原始列。(inplace=True参数表示直接在原始DataFrame上进行修改,而不是返回一个新的DataFrame。)

return df

当所有指定列都经过One-Hot编码并删除原始列后,函数返回修改后的DataFrame。

六、课程中出现的一些数据处理操作
1、替换特定字符:
data = data.replace('-', '-1')
这行代码在data DataFrame中全局搜索所有的'-'字符,并将它们替换为字符串'-1'。注意,这里的替换是全局的,它会检查DataFrame中的所有元素(即所有列和行中的每个单元格),并将找到的'-'替换为'-1'。这种替换默认不会改变数据的类型,即如果原数据是数值类型,替换后的结果仍然是字符串类型。
2、更改数据类型:
data.notRepairedDamage = data.notRepairedDamage.astype('float32')
这行代码将data DataFrame中notRepairedDamage列的数据类型转换为float32。这通常用于确保列中的数据是以浮点数形式处理的,这对于数值计算和机器学习模型训练特别有用。
3、基于条件更新数据:
data.loc[data['power']>600,'power'] = 600
这行代码使用loc方法基于条件更新data DataFrame中的power列。具体来说,它查找power列中大于600的所有值,并将这些值设置为600。这是一种常见的数据预处理步骤,用于处理异常值或限制某些特征的范围,以便更好地进行后续的数据分析或机器学习模型训练。
4、填充空缺值
data[col] = data[col].fillna('-1')
对于config['cate_cols']中指定的所有分类特征列,使用字符串'-1'来填充缺失值。
5、处理无关数据
data.drop(['name', 'regionCode'], axis=1, inplace=True)
从数据集中移除了name和regionCode列
del test_data['price'] 删除‘price’列
6、筛选或隐藏数据
test_data = data[pd.isna(data.price)] 从 data DataFrame 中筛选出那些 price 列包含缺失值(即 NaN)的行,并将这些行存储到新的 DataFrame test_data 中。
train_data = train_data.drop(data[pd.isna(data.price)].index) 隐藏price 列中含有缺失值(NaN)的行
7、打乱数据顺序(使随机化)
train_data.sample(frac=1)这行代码就是用于随机化train_data DataFrame中的行顺序,以确保模型训练的公平性和泛化能力。
8、初始化
初始化函数 init
在Python中,特别是在使用面向对象编程(OOP)时,init 函数是一个特殊的方法,被称为类的构造函数或初始化方法。当创建类的新实例时,Python 会自动调用这个方法。init 方法的主要目的是初始化新创建的对象的状态或属性。在PyTorch的nn.Module子类中定义网络结构时,init 方法用于定义网络层的结构,即哪些层将被包含在网络中,以及这些层的配置(如输入和输出维度)。
9、前向传播函数 forward
def forward(self, x): 定义了数据通过网络的前向传播过程。x是输入数据。
y = self.layers(x): 将输入数据x传递给self.layers(即前面定义的层序列),执行前向传播,并将结果存储在y中。这里的y是网络的最终输出。
return y: 返回网络的输出y。
七、tensor类
X=torch.tensor(train_data.values, dtype=torch.float32)
这行代码是使用PyTorch库来将一个名为train_data的数据集(可能是一个pandas DataFrame或者类似的二维数据结构)转换为PyTorch张量(Tensor)。这里,train_data.values获取了train_data中的值,通常是一个NumPy数组,然后这个数组被转换成了一个PyTorch张量,并且指定了数据类型为torch.float32。
补充:item()函数将pytorch张量转化成Python标量
X = X.reshape(-1, 334) 这行代码是在对已经存在的PyTorch张量 X 进行重塑(reshape)操作。这里,X 是一个多维张量,而 reshape 方法被用来改变其形状,但不改变其数据。
具体来说,reshape(-1, 334) 的含义是:
-1:这个维度的大小是自动计算的,以便保持张量中元素的总数不变。这里,PyTorch会计算需要多少行(第一个维度)来确保总的元素数量与原始张量相同,同时保持第二个维度为334。
334:这是重塑后张量的第二个维度的大小,即每行将包含334个元素。
这种重塑操作在准备数据以输入到神经网络中时非常常见。例如,如果你有一个包含多个样本的数据集,每个样本都有334个特征,但原始数据的形状可能不是 (n_samples, 334),你就可能需要使用 reshape 方法来将其转换为这种形状。

1、Tensor的基本概念
Tensor是一个多维数组,可以表示标量、向量、矩阵以及更高维度的数组。在深度学习中,Tensor是数据的基本单位,用于存储和传输数据。Tensor的维度(也称为秩)决定了其结构,例如:
Rank为0的Tensor是标量(Scalar),表示一个单一的数值。
Rank为1的Tensor是向量(Vector),表示一维数组。
Rank为2的Tensor是矩阵(Matrix),表示二维数组。
Rank大于2的Tensor称为高维张量,可以表示更复杂的数据结构。
2、Tensor的属性
Tensor具有多个属性,这些属性描述了Tensor的基本特征,包括:
数据类型(dtype):Tensor中元素的数据类型,如float32、int64等。
形状(shape):Tensor的维度信息,用元组表示,例如(2, 3)表示一个2行3列的二维Tensor。
设备(device):Tensor存储的设备,可以是CPU或GPU,用于指定Tensor的计算位置。
梯度(grad)(在PyTorch中):如果Tensor的requires_grad属性被设置为True,则PyTorch会跟踪与该Tensor相关的所有计算,并在调用.backward()时计算其梯度。
3、Tensor的创建与操作
在PyTorch和TensorFlow中,可以通过多种方式创建Tensor,例如:
一)直接创建:使用框架提供的函数,如PyTorch中的torch.tensor()、torch.zeros()、torch.ones()等,或TensorFlow中的tf.constant()、tf.zeros()、tf.ones()等。
二)从其他数据类型转换:可以从Python的内置数据类型(如列表、元组)或NumPy数组转换而来。
Tensor支持多种操作,包括基本的数学运算(如加减乘除)、矩阵运算(如矩阵乘法)、广播(Broadcasting)等。这些操作使得Tensor能够灵活地表示和处理复杂的数据结构和计算任务。
4、Tensor的应用
在深度学习中,Tensor被广泛应用于神经网络的构建和训练过程中。神经网络的每一层都涉及到Tensor的输入、输出和计算。通过前向传播(Forward Pass),数据以Tensor的形式在神经网络中流动,并产生最终的输出。然后,通过反向传播(Backward Pass)和梯度下降等优化算法,计算并更新网络中的参数(以Tensor的形式表示),以最小化损失函数并提高模型的性能。

标签:Tensor,二手车,模型,DataFrame,PyTorch,笔记,data,col,函数
From: https://www.cnblogs.com/wujinshanzhen/p/18329689

相关文章

  • 二手车交易价格预测笔记
    任务:利用神经网络完成对二手车交易价格的预测代码解析导入库importpandasaspdimportnumpyasnpfromtorchimportnn,optimimporttorchimportmatplotlib.pyplotasplt配置参数config={'epoch':10,'batch_size':512,'learning_rate':8e-......
  • C++自学笔记32(虚析构函数)
    在以往的笔记中我们讲到过析构函数和虚函数。析构函数是释放被初始化的变量,虚函数是告诉编译器有重名的函数被复写去派生类找对应函数。虚析构函数就是在基类析构函数前加入virtual表示派生类引用析构函数需要找派生类。看以下栗子。#include<iostream>classBase{publi......
  • 文字游侠:一款高效创作的AI模型神器,让你的内容生产力翻倍!
    在这个数字化的时代,内容创作成为了许多人的日常。无论是自媒体博主、营销人员还是企业宣传团队,都在寻找能够提高工作效率、保证内容质量的工具。在这个背景下,“文字游侠”应运而生,它是一款基于先进的人工智能技术开发的文字创作辅助软件,旨在帮助用户快速生成高质量的原创内容......
  • 如何使用 Keras 对 CNN 模型中的多个输入数据进行交叉验证
    我的数据集由时间序列(10080)和其他描述性统计特征(85)连接成一行组成。DataFrame是921x10166数据看起来像这样,最后两列为Y(标签)。idx0x1x2x3x4x5...x10079meanvar...Y0Y114031.0525.525.525.525.......
  • Qt+OpenCascade开发笔记(二):windows开发环境搭建(二):Qt引入occ库,搭建基础工程模板Demo和发
    前言  OpenCASCADE是由OpenCascadeSAS公司开发和支持的开源软件开发平台,旨在为特定领域快速开发程序而设计。它是一个面向对象的C++类库,提供了丰富的几何造型、数据交换和可视化等功能,成为许多CAD软件的核心组件。  本篇描述搭建Qt开发occ环境过程。 Demo  ......
  • 省心的笔记软件Notability for Mac v4.4.4中文激活版
    NotabilityMac版是Macos平台上的一款帮助用户备注文件的得力工具,NotabilityMac版可用于注释文稿、草拟想法、录制演讲、记录备注等。它将键入、手写、录音和照片结合在一起,便于您根据需要创建相应的备注。NotabilityforMac(最省心的笔记软件)v4.4.4中文激活版软件下载地......
  • 智象大模型2.0革新:文生图功能优化,攻克复杂长文本理解难题
    智象未来(HiDream.ai),作为AIGC领域的一站式生成平台,近日对其文生图功能进行了重大升级,这不仅为文生视频的发展奠定了重要技术壁垒,也展现了公司在图像生成领域的雄心壮志。智象未来(HiDream.ai)对文生图功能的预期非常高,一直以自己的节奏推进,旨在实现更多样化的功能、更逼真的视觉......
  • 华南理工大学线性代数笔记整理3——向量代数与应用几何
    本人华工21级电信本科生,目前大四,前段时间收拾书本时发现了自己保存完整的线代笔记和一些整理,应该会对大一新生的期末考试起作用,故作分享。注:大一时本人都是用手写A4纸的方式做笔记做复习,所以这里上传的都是一些纸质笔记的扫描件,尽量可以保证清晰。以分章节的方式,本章为第3章......
  • RBAC权限模型
    概念RBAC(Role-BasedAccessControl)是基于角色的访问控制,是一种用设计权限的一种思想,主要是将功能组合成角色,再将角色分配给用户目标:解耦用户和功能,降低操作错误率降低功能权限分配的繁琐程度实现思想RABC主要有user用户表,role角色表,permission权限表,以及role-permis......
  • 【AI模型】PPT生成
     一、天工AIhttps://www.tiangong.cn/ 先对话进行提纲生成,然后可以编辑提纲,再进行PPT生成 生成完毕后,可以直接点击导出下载  二、星火讯飞讯飞智文 生成的PPT相比天工的要略微简单,没有配图信息 同样可以导出下载 ......