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

【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 = set_index().drop('index',axis =1)
Y_train = set_index().drop('index',axis =1)
#重新进⾏索引顺序联想s96
2. 加载模型和模拟
① 加载模型,放⼊相关数据
dtrain = xgb.DMatrix(X_train, label=Y_train)pc-cillin
#放⼊训练数据
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 = ain(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 = _fscore()
#top_50_list = sorted(fscores, , 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['trip_duration']= submission.apply(lambda x :1if(x['trip_duration']<=0)else x['trip_duration'], axis =1) _csv("submission.csv", index=False)
#如果是⼩于0的话就当做0来处理log(0)也就是1了,最后⽣成csv⽂件就可以提交了

本文发布于:2024-09-21 04:22:36,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/453304.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   结果   模型
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议