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

二手车交易价格预测笔记

时间:2024-07-29 11:06:41浏览次数:8  
标签:nn 交易价格 二手车 config torch 笔记 train hidden data

任务:利用神经网络完成对二手车交易价格的预测

代码解析

导入库

import pandas as pd
import numpy as np
from torch import nn, optim
import torch
import matplotlib.pyplot as plt

配置参数

config = {
    'epoch': 10,
    'batch_size': 512,
    'learning_rate': 8e-3,
    'device': 'cuda',
    "num_cols": ['regDate', 'creatDate', 'power', 'kilometer', 'v_0', 'v_1', 'v_2', 'v_3', 'v_4', 'v_5', 'v_6', 'v_7', 'v_8', 'v_9', 'v_10',
                 'v_11', 'v_12', 'v_13', 'v_14'],
    "cate_cols": ['model', 'brand', 'bodyType', 'fuelType', 'gearbox', 'seller', 'notRepairedDamage']
}
  • epoch:指定训练的周期数,即整个训练集被用来训练神经网络的次数
  • batch_size:每次更新模型权重时使用的样本数量
  • learning_rate:学习率是梯度下降算法中的一个重要参数,决定了权重更新的步长。较高的学习率意味着模型权重更新更快,但可能跳过局部最小值;较低的学习率则可能使训练过程缓慢
  • device:指定用于计算的设备。如果可用,将使用GPU(通常比CPU快很多)来进行计算。cuda 是 NVIDIA GPU 的 PyTorch 后端。
  • num_cols和cate_cols: 列出了数据集中用于模型训练的特征列名。"num_cols" 包含数值型特征,如日期、功率、里程等;"cate_cols" 包含分类型特征,如车型、品牌、车身类型、燃料类型等。

导入数据

test_data = pd.read_csv('/gemini/data-1/used_car_testB_20200421.csv', sep=' ')
train_data = pd.read_csv('/gemini/data-1/used_car_train_20200313.csv', sep=' ')

合并数据

data = pd.concat([train_data, test_data])

定义One-Hot编码函数

def oneHotEncode(df, colNames):
    for col in colNames:
        dummies = pd.get_dummies(df[col], prefix=col)
        df = pd.concat([df, dummies],axis=1)
        df.drop([col], axis=1, inplace=True)
    return df

函数效果:对dataframe中的分类变量进行one-hot编码,即将每个分类变量都拆分成多个二进制的列。

eg:

Color Size
0 Red Small
1 Blue Large
2 Green Medium
3 Red Small
4 Blue Medium

转化为

index Color_Blue Color_Green Color_Red Size_Large Size_Medium Size_Small
0 0 0 1 0 0 1
1 1 0 0 1 0 0
2 0 1 0 0 1 0
3 0 0 1 0 0 1
4 1 0 0 0 1 0

数据预处理

data = data.replace('-', '-1')
data.notRepairedDamage = data.notRepairedDamage.astype('float32')
data.loc[data['power']>600,'power'] = 600
  • 处理特殊标记,将'-'转化为'-1'
  • 数据类型转换,notRepairedDamage 列的数据类型转换为 32 位浮点数,确保这一列可以进行数值运算
  • 异常值处理,查找 power 列中大于 600 的所有值,并将这些值统一设置为 600,可以防止极端值对模型训练产生不良影响。
# 处理离散数据
for col in config['cate_cols']:
    data[col] = data[col].fillna('-1')
data = oneHotEncode(data, config['cate_cols'])

# 处理连续数据
for col in config['num_cols']:
    data[col] = data[col].fillna(0)
    data[col] = (data[col]-data[col].min()) / (data[col].max()-data[col].min())

# 处理(可能)无关数据 
data.drop(['name', 'regionCode'], axis=1, inplace=True)
  • 处理离散数据:用-1填充缺失值,然后对分类特征进行one-hot编码
  • 处理连续数据:用0填充缺失值,然后对数据进行归一化处理,即将数值范围缩放到 [0, 1] 之间。
  • 处理(可能)无关数据:移除

特征缩放

在使用多指标在综合评价某事物时,可能存在各指标的数量级和量纲不同导致的数据爆炸或各指标对分析的作用不合理等情况,因此需要在数据预处理时采用特征缩放的方法来平衡各指标之间的差异,从而优化算法。

如果不进行特征缩放

假如特征\(x_1\)的数值是100左右,特征\(x_2\)的数值是1左右,方程为

标签:nn,交易价格,二手车,config,torch,笔记,train,hidden,data
From: https://www.cnblogs.com/Melnis/p/18329668

相关文章

  • C++自学笔记32(虚析构函数)
    在以往的笔记中我们讲到过析构函数和虚函数。析构函数是释放被初始化的变量,虚函数是告诉编译器有重名的函数被复写去派生类找对应函数。虚析构函数就是在基类析构函数前加入virtual表示派生类引用析构函数需要找派生类。看以下栗子。#include<iostream>classBase{publi......
  • 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中文激活版软件下载地......
  • 华南理工大学线性代数笔记整理3——向量代数与应用几何
    本人华工21级电信本科生,目前大四,前段时间收拾书本时发现了自己保存完整的线代笔记和一些整理,应该会对大一新生的期末考试起作用,故作分享。注:大一时本人都是用手写A4纸的方式做笔记做复习,所以这里上传的都是一些纸质笔记的扫描件,尽量可以保证清晰。以分章节的方式,本章为第3章......
  • 【Python学习手册(第四版)】学习笔记06-Python动态类型-赋值模型详解
    个人总结难免疏漏,请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。主要介绍Python的动态类型(也就是Python自动为跟踪对象的类型,不需要在脚本中编写声明语句),Python中变量和对象是如何通过引用关联,垃圾收集的概念,对象共享引用是如何影响多个变量......
  • Python学习手册(第四版)】学习笔记09.3-Python对象类型-分类、引用VS拷贝VS深拷贝、比较
    个人总结难免疏漏,请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。这部分稍杂,视需要选择目录读取。主要讲的是对之前的所有对象类型作复习,以通俗易懂、由浅入深的方式进行介绍,所有对象类型共有的特性(例如,共享引用),引用、拷贝、深拷贝,以及比较、......
  • Web API 基础案例笔记
    年会抽奖案例图解代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><metaname="viewport"content=......
  • [学习笔记] 阶 & 原根 - 数论
    较为冷门(?)的数论知识,但在解决一些特殊问题上有着重要的作用。整数的阶根据欧拉定理有正整数\(n\)和一个与\(n\)互素的整数\(a\),那么有$a^{\phi(n)}\equiv1\pmod{n}$。因此至少存在一个整数满足这个方程。并且由良序原理可得一定存在一个最小正整数满足这个方程。、......
  • C语言笔记(第n版):编译器与构建系统
    一、C语言标准与编译器        C编译器是软件开发中至关重要的工具,它的主要作用是将人类可读的C语言源代码转换为计算机能够理解和执行的可执行代码。    (一)C语言标准的制定C语言标准的制定是一个逐步发展和完善的过程。在早期,C语言缺乏统一的标准,这导致......
  • C++ 笔记(一)数据类型(1)
    1简单的变量变量名命名规则如下变量名称可以包含字母、数字和下划线(_)。变量名称的第一个字符必须是字母或下划线。区分大小写,即大写字母和小写字母被认为是不同的字符。不能使用C++的关键字作为变量名。2数据类型2.1整型short、int、long和longlong这四种类型都是......