【Kaggle纽约出租车车程用时预测实战(4)】One-hot encode处理属性标签数据

特征数据分类

分类变量(定量特征)与连续变量(定性特征)。我们训练模型的变量,一般分为两种形式。比如之前进行的房价预测,单以最后的标签(因变量)来看,房价可以在一定范围内取得任意数值,则此时变量为连续变量。如果把房价进行分段处理,之前是按照大于中位数就是高房价,低于中位数就是低房价,那么此时变量为分类变量

特征转换。对于分类变量,要进行转换,通常直接转换为数字。比如将高房价和低房价表示为True(1),False(0)。原因主要有两点:

1) 转换后可以提高模型运算效率
2) 对于一些模型,比如逻辑回归或计算距离时,无法对分类值直接进行计算

因此,需要更好的编码方式对特征进行转换

one hot编码

one hot编码(独热编码)是将类别变量转换为机器学习算法易于利用的一种形式的过程。one-hot编码的定义是用N位状态寄存器来对N个状态进行编码。比如上面的例子高房价和低房价,有2个分类值,因此N为2,对应的one-hot编码可以表示为10和01

1. one hot编码实现
ls = ['上海','北京','深圳']
pd.get_dummies(ls)

–> 输出的结果为:
在这里插入图片描述

2. 以出租车公司举例

这里有两家出租车公司,分别为1和2,为了避免数字之间的大小对模拟预测的影响,可以将数据转化为one hot编码

train[['vendor_id','store_and_fwd_flag']].head()

–> 输出的结果为:(第一个字段表示出租车公司的类别,第二个字段代表的是有没有打计价器)
在这里插入图片描述
将数据转化为独热编码,为了保证一致性,要确保测试集和训练集上都进行转变

vendor_train = pd.get_dummies(train['vendor_id'], prefix='vi', prefix_sep='_')
vendor_test = pd.get_dummies(test['vendor_id'], prefix='vi', prefix_sep='_')

vendor_train.head()

–> 输出的结果为:(比如这里查看一下测试集上面该字段转化后的内容,可以看出结果是和上面的数据对应上的)
在这里插入图片描述

3. 将所有的属性标签进行独热编码转化
store_and_fwd_flag_train = pd.get_dummies(train['store_and_fwd_flag'], prefix='sf', prefix_sep='_')
store_and_fwd_flag_test = pd.get_dummies(test['store_and_fwd_flag'], prefix='sf', prefix_sep='_')
#是否打表计时也属于分类数据
cluster_pickup_train = pd.get_dummies(train['pickup_cluster'], prefix='p', prefix_sep='_')
cluster_pickup_test = pd.get_dummies(test['pickup_cluster'], prefix='p', prefix_sep='_')
cluster_dropoff_train = pd.get_dummies(train['dropoff_cluster'], prefix='d', prefix_sep='_')
cluster_dropoff_test = pd.get_dummies(test['dropoff_cluster'], prefix='d', prefix_sep='_')

train['dayofweek'] = train['pickup_datetime'].dt.dayofweek
#这里将上车的时间转化为星期几的形式,然后再转化为独热编码
#默认出租车是在一天内行驶的,所以只处理上车的数据即可
test['dayofweek'] = test['pickup_datetime'].dt.dayofweek

month_train = pd.get_dummies(train['month'], prefix='m', prefix_sep='_')
month_test = pd.get_dummies(test['month'], prefix='m', prefix_sep='_')
dom_train = pd.get_dummies(train['day'], prefix='dom', prefix_sep='_')
dom_test = pd.get_dummies(test['day'], prefix='dom', prefix_sep='_')
hour_train = pd.get_dummies(train['hr'], prefix='h', prefix_sep='_')
hour_test = pd.get_dummies(test['hr'], prefix='h', prefix_sep='_')
hour_cate_train = pd.get_dummies(train['hr_categori'], prefix='hc', prefix_sep='_')
#这个也是分类数据
hour_cate_test = pd.get_dummies(test['hr_categori'], prefix='hc', prefix_sep='_')
dow_train = pd.get_dummies(train['dayofweek'], prefix='dow', prefix_sep='_')
#将确认为星期几也是属于分类的数据,和月天小时是同理的
dow_test = pd.get_dummies(test['dayofweek'], prefix='dow', prefix_sep='_')

month_train.head()

–> 输出的结果为:
在这里插入图片描述

4. 删除干扰特征

因为已经将属性标签(分类数据)进行独热编码处理了,那么原来的字段数据就可以进行删除了(这些数据有的会有大小之间的关系,造成不希望的结果),避免对模型预测产生影响,最后的一个因为是使用了比赛要求的形式评估结果,所以这个字段的数据也应该删除

train = train.drop(['id','vendor_id','store_and_fwd_flag','dayofweek','hr_categori','minute',
                    'month','day','hr','pickup_cluster','dropoff_cluster','dropoff_datetime', 'trip_duration'],axis = 1)
                    
#Test_id = test['id']
test = test.drop(['id','vendor_id','store_and_fwd_flag','dayofweek','hr_categori','minute',
                  'month','day','hr','pickup_cluster','dropoff_cluster'], axis = 1)
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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、付费专栏及课程。

余额充值