我有一个关于包裹投递的数据集,其中包含行程时间、计划投递时间、实际投递时间、延误和计划投递时间等列。在此基础上,我需要预测交货是否会按时。以下是数据集:
我计划使用 sklearn
的 LabelEncoder()
来实现分类特征,然后将此数据拟合到 DecisionTreeClassifier()
。我的问题是,我应该转换包含 TIME 的特征还是保留它?时间值 1955
表示 19:55
,735
表示 07:35
。我正在使用Python。
最佳答案
由于 19:59 的 1959
值与 20:00 的 2000
值之间的差异基本上只有 1 分钟,因此使用此类数据会丢失该上下文表示。例如,您的模型会将这两个示例之间的差异理解为 1900
和 1941
之间的差异,这根本不是您打算做的发生。
我无法从数学上向你证明这会导致你的训练模型出现错误,但这是非常糟糕的做法。如果可能的话,我会转换为更统一的其他内容,例如自 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
当然,对数据中的所有时间都进行一致的操作,以避免任何误传
关于python - 使用涉及开始和结束时间的数据进行二元预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50697716/