使用线性回归、LGBM对二手车价格进行预测

使用线性回归、LGBM对二手车价格进行预测

说明

本项目包含
1.数据处理
2.数据可视化
3.构建模型预测二手车价格

完整代码及数据见文末,可在线运行,也可下载

数据导入、查看和清洗

数据说明

column 列名
index 序号
Name 汽车的品牌和型号。
Location 该车正在销售或可购买的地点。
Year 车型的年份或版本。
Kilometers_Driven 前任车主驾驶该车的总公里数,单位为KM。
Fuel_Type 汽车使用的燃料类型(汽油/柴油/电动/CNG/LPG)。
Transmission 汽车使用的传动装置的类型。
Owner_Type 车主是否为第一手、第二手或其他。
Mileage 汽车公司提供的标准里程,单位是kmpl或km/kg。
Engine 发动机的排量,单位是cc。
Power 发动机的最大功率,单位是bhp。
Seats 汽车中的座位数。
New_Price 同一型号的新车的价格。
Price 二手车的价格,单位是印度卢比。( train.csv)

导入训练集

import pandas as pd
df_train = pd.read_csv('/home/mw/input/data6802/train-data.csv') 
df_train.drop('Unnamed: 0',axis=1,inplace=True)
df_train.head()

在这里插入图片描述

导入测试集

df_test = pd.read_csv('/home/mw/input/data6802/test-data.csv') 
df_test.drop('Unnamed: 0',axis=1,inplace=True)
df_test.head()

在这里插入图片描述

合并数据

先合并数据,方便清洗

df = df_train.append(df_test)
df.head()

查看数据整体情况

查看数据缺失请况,可以看出,新车价格大面积缺失,缺失了86%,其余特征缺失率都较低

df.info()

<class ‘pandas.core.frame.DataFrame’>
Int64Index: 7253 entries, 0 to 1233
Data columns (total 13 columns):
Engine 7207 non-null object
Fuel_Type 7253 non-null object
Kilometers_Driven 7253 non-null int64
Location 7253 non-null object
Mileage 7251 non-null object
Name 7253 non-null object
New_Price 1006 non-null object
Owner_Type 7253 non-null object
Power 7207 non-null object
Price 6019 non-null float64
Seats 7200 non-null float64
Transmission 7253 non-null object
Year 7253 non-null int64
dtypes: float64(2), int64(2), object(9)
memory usage: 793.3+ KB

all_data_na = (df.isnull().sum()/len(df))*100
all_data_na = all_data_na.drop(all_data_na[all_data_na == 0].index).sort_values(ascending=False)
missing_data = pd.DataFrame({
   '缺失率' : all_data_na})
missing_data
缺失率

New_Price 86.129877
Price 17.013650
Seats 0.730732
Power 0.634220
Engine 0.634220
Mileage 0.027575

发现有一个重复数据,我们后面需要剔除掉

df.duplicated().sum()

处理数据

#去除重复值
df.drop_duplicates(inplace=True)
#删去缺失价格列和Name列
df.drop("New_Price", axis=1, inplace=True)
df.drop("Name", axis=1, inplace=True)
df.head()

检查并处理缺失变量

Seats、Power、Engine、Mileage
含义为:
Mileage 汽车公司提供的标准里程,单位是kmpl或km/kg。
Engine 发动机的排量,单位是cc。
Power 发动机的最大功率,单位是bhp。
Seats 汽车中的座位数。
不着急做填充,先挨个检查变量,然后进行处理
首先是车座

df['Seats'].value_counts()

5.0 6046
7.0 796
8.0 170
4.0 119
6.0 38
2.0 18
10.0 8
9.0 3
0.0 1
Name: Seats, dtype: int64

车座不可能为0,我们将其删除

df.drop(df[df['Seats']==0]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱挠静香的下巴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值