【Kaggle纽约出租车车程用时预测实战(5)】XGBOOST训练模型预测结果

1. 数据准备及划分

上一步已经完成了数据独热编码的转化,接下来就需要把处理的数据添加到训练和测试数据集中,同时再去掉不需要的数据(上面去掉的都是分类数据,这里去掉的是连续数据)

1) 加载训练数据

Train_Master = pd.concat([train,
                          vendor_train,
                          store_and_fwd_flag_train,
                          cluster_pickup_train,
                          cluster_dropoff_train,
                         month_train,
#                          dom_train,
#                           hour_train,
                          hour_cate_train,
                          dow_train
                         ], axis=1)

2) 加载测试数据

Test_master = pd.concat([test, 
                         vendor_test,
                         store_and_fwd_flag_test,
                         cluster_pickup_test,
                         cluster_dropoff_test,
                         month_test,
#                          dom_test,
#                           hour_test,
                         hour_cate_test,
                          dow_test
                        ], axis=1)

3) 删除干扰数据

Train_Master = Train_Master.drop(['pickup_datetime'],axis = 1)
Test_master = Test_master.drop(['pickup_datetime'],axis = 1)
#这里是连续变量,因为前面已经进行细化的分解成天月小时,这里就可以进行数据的删除了

4) 数据划分

① 留出法划分数据

也就是之前的留出法,这里不是使用7:3,而是使用了0.01(百分之一的数据),因为数据的样本约有1500000条数据,那么百分之一的数据就有15000条了

Train, Test = train_test_split(Train_Master, test_size = 0.01)

② 接着就是提取自变量和因变量(因变量即是标签)

注意一下这个Test和上面Test_master之间的区别,首先Test数据是从Train_Master数据集里面划分出去的,大约有15000条数据,拥有训练数据中所有的特征,用来检测模型是否过拟合或者满足要求;而Test_master是要上交比赛的结果,里面是没有标签值的,这部分的数据就是来检验模型的,最终根据模型的结果给项目打分

X_train = Train.drop(['log_trip_duration'], axis=1)
#提取训练数据自变量
Y_train = Train["log_trip_duration"]
#提取训练数据因变量
X_test = Test.drop(['log_trip_duration'], axis=1)
#提取测试数据自变量
Y_test = Test["log_trip_duration"]
#提取测试数据因变量

Y_test = Y_test.reset_index().drop('index',axis = 1)
Y_train = Y_train.reset_index().drop('index',axis = 1)
#重新进行索引顺序
2. 加载模型和模拟

① 加载模型,放入相关数据

dtrain = xgb.DMatrix(X_train, label=Y_train)
#放入训练数据
dvalid = xgb.DMatrix(X_test, label=Y_test)
#放入测试数据
dtest = xgb.DMatrix(Test_master)
#放入最终的检测数据(前面已经讲清楚了)

② 参数调节

xgb_pars = {
    'objective':          'reg:linear',
    'learning_rate':      0.05,
    'max_depth':          7,
    'subsample':          0.8,
    'colsample_bytree':   0.7,
    'colsample_bylevel':  0.7,
    'silent':             1,
    'reg_alpha':          1,
}

③ 模型拟合

watchlist = [(dtrain, 'train'), (dvalid, 'valid')]
#设置观测对象
model = xgb.train(xgb_pars, dtrain, 500, watchlist, early_stopping_rounds=5,
      maximize=False, verbose_eval=1)
print('Modeling RMSLE %.5f' % model.best_score)

–> 输出的结果为:(可以看出本来应该运行500次的,但是实际上只运行了344步,原因就在于early_stopping_rounds=5参数的设定,也就是当连续五次模型没有改进的时候就停止运行,所以最后输出来的Best iteration就是第339次的结果,这期间验证集的分数是一直比测试集的分数要低的,所以不用担心过拟合的现象)
在这里插入图片描述

3. 模型结果
fscores = model.get_fscore()
#top_50_list = sorted(fscores, key=fscores.get, reverse=True)[:50]
#比如获得前50个特征的排序

xgb.plot_importance(model, max_num_features=70, height=0.9)
#前70特征值绘制条状图

–> 输出的结果为:(特征数据经过独热编码后就变多了)
在这里插入图片描述
图形放大部分展示(可以看出上车时间和下车的地点、行程距离及乘车地点等特征具有很强的重要性)
在这里插入图片描述

4. 模型预测
pred = model.predict(dtest)
pred = np.exp(pred) - 1
#按照比赛的规则记性预测结果输出

最后进行结果提交

submission = pd.concat([Test_id, pd.DataFrame(pred)], axis=1)
#这里的Test_id就是之前在删除之前保留的数据
submission.columns = ['id','trip_duration']
#按照要求提交保留的数据
submission['trip_duration'] = submission.apply(lambda x : 1 if (x['trip_duration'] <= 0) else x['trip_duration'], axis = 1)
submission.to_csv("submission.csv", index=False)
#如果是小于0的话就当做0来处理log(0)也就是1了,最后生成csv文件就可以提交了
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Kaggle纽约出租车车程用时预测实战是一个数据科学竞赛项目,旨在通过分析纽约出租车的行驶数据预测出租车车程用时。该项目需要参赛者使用机器学习数据挖掘技术,对大量的出租车行驶数据进行分析和建模,以预测出租车的行驶时间。该项目不仅考验参赛者的数据分析和建模能力,还需要参赛者具备良好的编程和数据处理能力。 ### 回答2: Kaggle是一个全球性的数据科学竞赛和社区平台,纽约出租车车程用时预测是其上面的一个实战项目。通过这个实战项目,我们可以学习和掌握数据分析、可视化、特征工程和机器学习等常用数据科学技术。下面,我将从数据探索、特征工程和模型训练三个方面简要介绍这个实战项目。 1. 数据探索 纽约出租车车程数据集包含了2016年1月至6月期间的1,458,644次出租车行程。针对这个数据集,我们需要了解其中的特征以及它们与所预测的目标变量之间的关系,从而可以选择合适的特征进行建模。在数据探索过程中,我们可以使用describe()函数快速获取数据的统计量,使用散点图和直方图等可视化图表分析目标变量(Y)和各特征(X1,X2,...,Xn)之间的相关性,如下图所示: ![kaggle-describe()](https://cdn.jsdelivr.net/gh/Miracleyh/PicBed/Pic/kaggle-describe.png) ![kaggle-scatter-plots](https://cdn.jsdelivr.net/gh/Miracleyh/PicBed/Pic/kaggle-scatter-plots.png) ![kaggle-histograms](https://cdn.jsdelivr.net/gh/Miracleyh/PicBed/Pic/kaggle-histograms.png) 从上面的图表可以看出,乘客数量、行驶距离、车类型、天气条件等特征与车程用时存在一定的相关性,可以作为建模的重要特征。 2. 特征工程 特征工程是机器学习中非常重要的一步,它能够对原始数据进行变换和组合,以提取具有区分性的特征,从而提高了模型的预测能力。在这个实战项目中,可以采用如下特征工程方法: (1) 特征选择:从上面的数据探索中可以得到一些与车程用时相关的特征,对于无关特征或者重复特征可以进行去除; (2) 特征变换:对于一些原始特征需要进行变换,例如时间戳可以转换为年、月、日、小时等具体时间信息; (3) 特征组合:通过将一些有关联的特征进行组合,如起始点和终点的经纬度可以计算出车程距离,再加上时间信息可以计算出行驶速度等。 3. 模型训练 在完成特征工程之后,我们可以根据目标变量(Y)和各特征(X1,X2,...,Xn)之间的关系选择机器学习算法进行模型训练。对于这个实战项目,我们可以选择线性回归、决策树、随机森林等算法进行建模,并且使用交叉验证等技术选择最优的算法和参数。最终的模型可以在测试集上进行评估和优化,以提高模型的预测精度和泛化能力。 通过以上的三个步骤,我们可以完成纽约出租车车程用时预测实战项目,得到的结果可以应用于出租车运营公司的管理和运作工作中,提高运营效率和服务质量。 ### 回答3: Kaggle纽约出租车车程用时预测实战是一个机器学习项目,旨在通过历史数据预测纽约市的出租车车程用时。这个项目基于一组数据集,其中包含有关纽约出租车的许多数据点。通过这个项目可以掌握机器学习算法在实际问题中的应用,了解数据预处理、特征工程、模型选择等机器学习项目的基本流程。 在这个项目中,数据预处理的工作包括了数据清洗、处理缺失值、异常值、数据变换等。特征工程是机器学习项目中非常重要的一环,需要通过特征工程来提取出对机器学习任务最具有影响的特征。这些特征包括时间、日期、出发地点和到达地点等信息。在特征工程中,需要对所有的特征进行针对性的分析和处理,包括数据变换、归一化、特征提取等。 在模型训练阶段,我们可以选择多个机器学习算法进行训练,包括线性回归、决策树、支持向量机等。需要注意的是,不同的机器学习算法在处理不同的数据集时会有不同的表现。因此,在训练模型之前,选用合适的算法是非常重要的。 在模型训练过程中,我们需要将数据集分成训练集和测试集。并使用模型对测试集进行预测,通过预测结果和实际数据比对来验证模型的准确性。在验证结果之后,我们可以对模型进行优化,如配合使用正则化技术来避免过拟合,提高模型的鲁棒性和泛化性能,或使用集成学习等技术来获得更高的模型性能。同时,我们还可以通过其他的方式,如可视化分析等来验证模型的效果。 综上所述,Kaggle纽约出租车车程用时预测实战是一个很好的练习机器学习能力的项目。通过参加这个实战项目,大家可以从中学习到机器学习的基本知识和技能,了解机器学习的应用前沿和发展方向,从而更好的应对现实生活中的机器学习任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lys_828

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

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

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

打赏作者

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

抵扣说明:

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

余额充值