记录我的组队学习之路——基于二手车价格预测比赛——特征筛选、建模、优化

本文记录了一次基于二手车价格预测的比赛过程,包括特征筛选、模型建立(如xgb、randomForest、lightgbm)以及模型优化。作者首先用树模型作为基准,然后通过特征重要性选择关键特征,并对随机森林模型进行参数调优,最终得到最佳模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面已经通过特征工程对特征进行了预处理,并且构造了新的特征,接下来我们就可以进行建模,筛选特征、调参优化。
总体思路如下:

  • 使用树模型(xgb/randomForest)看一下现所有特征建模结果,以此作为一个基准;
  • 选择入模特征;
  • 使用xgb、randomForest、lightgbm分别进行建模,选出冠军模型;
  • 对冠军模型参数进行调节,保存模型
  • 可尝试学习模型融合。

初次建模
我使用xgb模型和五折交叉验证对所有特征进行建模,模型结果如下:
【第一次训练时没有对Y值进行取对数,结果误差非常大,再一次证明在回归模型中需要对Y变量进行对数化处理,当然也可以使用其它转换方式,使之呈现正态分布】

import xgboost as xgb
from sklearn.model_selection import cross_val_score
from sklearn.metrics import mean_absolute_error,make_scorer
xgb_model = xgb.XGBRegressor()
score = cross_val_score(xgb_model,cv=5,X=train_tree_data.iloc[:,1:-1],y = np.log(train_tree_data.iloc[:,-1]),verbose=1,scoring=make_scorer(mean_absolute_error,greater_is_better=False))
print('MAE_AVG:',np.mean(score))
#MAE_AVG: -0.17081140057724026

在特征构造时只是针对brand与price的关系分组构造了特征,现在认为还可以对bodyType(车身类型)进行分组,代码和brand分组一样,此处不再重复,加入新特征后再次建模,模型结果有一点提升:

#train_tree_data['bodyType'].value_counts()
#0.0    37076
#1.0    30252
#2.0    26846
#3.0    12413
#4.0     8665
#5.0     6608
#6.0     5977
#7.0      998
#Name: bodyType, dtype: int64
#print('MAE_AVG:',np.mean(score))
#MAE_AVG: -0.17035740685819228

筛选特征
根据基模型特征重要性对特征按从大到小排序,获得模型特征累积重要性,按照累积重要性50%,55%…100%进行建模。根据模型结果获得最佳建模特征。

xgb_model.fit(train_tree_d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值