在机器学习算法中处理数据框架中的时间特征



我有一个包含以下特征的数据框架:

['plug-in time', 'plug-out time', 'charging duration','charge value']

例如'plug-in time'是日期格式(即2020/12/31 18:32:19),其他时间-日期特征也类似。

我正在尝试使用基于学习的方法来处理这个数据集,但是,我已经设置了一个函数,可以使用以下代码自动将pandas object特征(例如'plug-in time', 'plug-out time', 'charging duration')转换为整数:

df['plug-in time'] = pd.to_datetime(df['plug-in time'])
for row in df['plug-in time']:

df['plug-in time'][row] = 3600*df['plug-in time'][row].hour+60*df['plug-in time'][row].minute+df['plug-in time'][row].second

使我在特征['plug-in time']中的数据变成以秒为分辨率的整数(使2020/12/31 18:32:19变成an integer)。

然后在我的预测模型中使用这些值。这听起来有点傻,但这就是我在使用学习方法时解决属性和参数类型错误的方法。

还有别的办法吗?

我知道sklearn有数据预处理类,但我不确定这些预处理对timestamp功能(如pandas timestamp)有用。

我猜最终收费值与开始收费值的关系比其他任何东西都要大。即电池电量很低时,充电效率最大。由于您不知道起始收费值,因此最可能使用星期几和一天中的小时作为代理。一种假设是,在工作日的深夜给手机充电,电池电量会比清晨或周末低。

我怀疑你可以删除插件时间,因为它与持续时间特性无关。您可以立即对您的工作日功能进行编码。记住,日和小时是有序的特征,而不是连续的——这一点很重要。

我猜鉴于你的特性,这是一个很好的起点。

在任何情况下都可以使用

df['day_of_week'] = df['plug-in time'].dt.weekday_name
df['hour_of_day'] = df['plug-in time'].dt.hour
df.drop(columns=['plug-in time','plug-out time'], inplace=True)

这里有一个关于如何处理一天中的一小时的很好的链接,不要忘记为你的工作日特征进行one-hot编码(制作假人)。

最新更新