我有一个关于包裹递送的数据集,包括旅行时间,计划运送时间,实际运送时间,延迟和计划交货时间等列。在此基础上,我需要预测交货是否准时。以下是数据集:
我打算将sklearn
的{{1}}用于分类功能,然后将此数据放入LabelEncoder()
。我的问题是,我应该转换包含TIME的功能还是只留下它?时间值DecisionTreeClassifier()
表示1955
,19:55
表示735
。我正在使用python。
答案 0 :(得分:1)
由于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
当然,在您的数据中始终如一地这样做,以避免任何虚假陈述
答案 1 :(得分:1)
由于您有装运延迟栏,因此不需要实际装运时间和计划装运时间。
并且您计划了旅行时间,因此不需要计划的交付时间。
但交货时间可能取决于一天中的时间(例如:早上或下午或晚上)。因此,您可以从实际发货时间中选择几个类别,并将其用于模型构建。
因此,在构建模型时,您无法真正忽略时间列。