动手学深度学习task5

task5 二手车交易价格预测

1.基础数据

在这里插入图片描述

2.代码实现

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
#数据读取
train_data = pd.read_csv('D:/网页下载/used_car_train_20200313/used_car_train_20200313.csv', sep=' ')
test_data = pd.read_csv('D:/网页下载/used_car_train_20200313/used_car_testB_20200421/used_car_testB_20200421.csv', sep = ' ')
train_data.head()

空值,异常值检测:

train_data.isnull().sum()

在这里插入图片描述

print(train_data.dtypes)

如存在object类型的数据需要对数据进行检查和类型的转换
这里发现notRepairedDamage存在异常值

notRepairedDamage = train_data['notRepairedDamage'].values.tolist()
for i in range(len(notRepairedDamage)):
    if notRepairedDamage[i][0] == '-':
        notRepairedDamage[i] = 0.0
    else:
        notRepairedDamage[i] = float(notRepairedDamage[i])
train_data['notRepairedDamage'] = pd.DataFrame(notRepairedDamage)

notRepairedDamage = test_data['notRepairedDamage'].values.tolist()
for i in range(len(notRepairedDamage)):
    if notRepairedDamage[i][0] == '-':
        notRepairedDamage[i] = 0.0
    else:
        notRepairedDamage[i] = float(notRepairedDamage[i])
test_data['notRepairedDamage'] = pd.DataFrame(notRepairedDamage)

空值处理

for col in('fuelType', 'gearbox', 'bodyType'):
    train_data[col] = train_data[col].fillna(train_data[col].mode()[0])
    test_data[col] = train_data[col].fillna(test_data[col].mode()[0]) #这里选择替换为众数
test_data.fillna(0.0)
train_data.fillna(0.0)

再次检查,无空值

train_data.isnull().sum()

在这里插入图片描述
对价格数据进行了解

train_data['price'].describe()

在这里插入图片描述

sns.displot(train_data['price'])
plt.show()

在这里插入图片描述
注册日期是年月日的形式,这里我改成了年份来表征

#把注册日期改为年份
regDate = train_data['regDate'].values.tolist()
for i in range(len(regDate)):
    regDate[i] = int(str(regDate[i])[:4])
train_data['regDate'] = pd.DataFrame(regDate)

对相关性进行分析并进行排序

k = 31
highcor_var = corramt.nlargest(k, 'price')['price'].index
highcor_data = train_data.loc[:, highcor_var]
fig, ax = plt.subplots(figsize = (30, 30))
fig = sns.heatmap(highcor_data.corr(), annot = True, square = True)
plt.title('the highest variables')
print(highcor_var)

在这里插入图片描述
在这里插入图片描述
散点图的形式表示

sns.set()
cols = ['price', 'v_12', 'v_8', 'v_0', 'regDate', 'gearbox', 'bodyType',
       'power', 'fuelType', 'v_5', 'model']
sns.pairplot(train_data[cols], size = 2.5)
plt.show()

在这里插入图片描述
选择几个相关性较强的因素,观察其规律

data = pd.concat([train_data['price'], train_data['v_12']], axis = 1)
data.plot.scatter(x = 'v_12', y = 'price', ylim=(0,110000))
plt.show()

在这里插入图片描述

data = pd.concat([train_data['price'], train_data['v_0']], axis = 1)
data.plot.scatter(x = 'v_0', y = 'price', ylim=(0,110000))
plt.show()

在这里插入图片描述

箱线图形式:

var1 = 'fuelType'
data = pd.concat([train_data['price'], train_data['fuelType']], axis = 1)
fig = sns.boxplot(x=var1, y='price', data = data)
fig.axis(ymin = 0, ymax = 110000)
plt.title('fuelType and price relation[box]')

在这里插入图片描述

var2 = 'bodyType'
data = pd.concat([train_data['price'], train_data['bodyType']], axis = 1)
fig = sns.boxplot(x=var2, y='price', data = data)
fig.axis(ymin = 0, ymax = 110000)
plt.title('bodyType and price relation[box]')

在这里插入图片描述

var3 = 'gearbox'
data = pd.concat([train_data['price'], train_data['gearbox']], axis = 1)
fig = sns.boxplot(x=var3, y='price', data = data)
fig.axis(ymin = 0, ymax = 110000)
plt.title('gearbox and price relation[box]')

在这里插入图片描述

var4 = 'regDate'
data = pd.concat([train_data['price'], train_data['regDate']], axis = 1)
fig, ax = plt.subplots(figsize=(12, 9))
fig = sns.boxplot(x=var4, y='price', data = data)
fig.axis(ymin = 0, ymax = 110000)
plt.title('regDate and price relation[box]')

在这里插入图片描述
模型训练和预测

from sklearn.ensemble import GradientBoostingRegressor
GBoost = GradientBoostingRegressor(n_estimators=3000, learning_rate=0.05,max_depth=4, max_features='sqrt',min_samples_leaf=15, min_samples_split=10, loss='huber', random_state =5)
cols = [ 'v_12', 'v_8', 'v_0', 'regDate', 'gearbox', 'bodyType',
       'power', 'fuelType', 'v_5', 'model', 'notRepairedDamage', 'v_3','v_11','v_10','v_9','v_4','kilometer'] #只选择相关性较强的数据进行训练
test_x = test_data[cols].values
x = train_data[cols].values
y = train_data['price'].values
GBoost.fit( x, y)
y_pred = GBoost.predict(x_test)

生成结果文件

prediction = pd.DataFrame(y_pred, columns=['price'])
res = pd.concat([test_data['SaleID'], prediction], axis=1)
res.columns
res.to_csv('./prediction.csv', index=False)

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了在GPU上搭建动手深度学习pytorch环境,你需要按照以下步骤进行操作。 首先,你需要安装Anaconda来管理你的Python环境。你可以从官方网站 https://www.anaconda.com/ 下载适用于你操作系统的Anaconda安装程序。安装完成后,你可以使用conda命令创建一个新的环境。 接下来,你需要安装CUDA。CUDA是用于支持GPU计算的NVIDIA的并行计算平台和API模型。你可以从NVIDIA的官方网站下载适用于你的显卡型号的CUDA安装程序进行安装。 然后,你需要安装CUDNN。CUDNN是一个针对深度神经网络加速的GPU库。你可以从NVIDIA的开发者网站下载CUDNN并按照安装说明进行安装。 接下来,你可以使用conda命令来安装pytorch。你可以复制以下命令,在新建的环境中输入: ``` conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch ``` 安装完成后,你可以在命令行中输入python进入Python解释器环境,并导入torch模块来测试pytorch的安装。你可以使用以下代码进行测试: ```python import torch from __future__ import print_function x = torch.rand(5, 3) print(x) print(torch.cuda.is_available()) # 测试CUDA是否可用 ``` 这样,你就成功搭建了动手深度学习pytorch环境,并且可以在GPU上进行深度学习任务了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [01 动手深度学习-配置环境pytorch](https://blog.csdn.net/qq_44653420/article/details/123883400)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值