使用涉及开始和结束时间的数据进行二元预测

Binary prediction with data involving starting and ending time

我有一个关于包裹递送的数据集,包含旅行时间、计划运送时间、实际运送时间、延误和计划运送时间等列。并在此基础上,我需要预测是否准时交货。以下是数据集:

我计划使用 sklearnLabelEncoder() 作为分类特征,然后将此数据拟合到 DecisionTreeClassifier()。我的问题是,我应该转换包含 TIME 的特征还是保留它?时间值 1955 表示 19:55735 表示 07:35。我正在使用 python.

由于 19:59 的 1959 和 20:00 的 2000 的值之间的差异基本上只有 1 分钟,因此使用此类数据会丢失该上下文表示。例如,您的模型会将这两个示例之间的差异理解为 19001941 之间的差异,这根本不是您打算发生的情况。

我无法从数学上向您证明这会导致您的训练模型出错,但这是非常糟糕的做法。如果可能的话,我会转换成其他更统一的东西,例如 00:00(午夜)以来的分钟数:

def time_converter(time_str):
    hours = int(time_str[:2])
    minutes = int(time_str[2:])
    time_since_midnight = (hours * 60) + minutes
    return time_since_midnight

time_converter('1940') # will return 1180 integer for 1180 minutes since midnight

当然,在您的数据中始终如一地执行此操作,以避免任何错误陈述

由于您有发货延迟列,因此不需要实际发货时间和计划发货时间。

并且您已经计划了旅行时间,因此不需要计划交货时间。

但交货可能取决于一天中的时间(例如:上午或下午或晚上)因此您可以根据实际发货时间制作一些类别,并将其用于模型构建。

因此,您在构建模型时不能真正忽略时间列。