我有一个大型数据集,用于描述工厂多名员工长期从事的活动-- 01/01/2017 - present。不同工作人员所开展的活动在每个时间点都会被记录下来(因为他们与软件交互)。我把这些记录下来,记录了每个经营者每天所做的活动的数量。
我的桌子是这样的:
Date Name Activity UnitsProcessed Shift Team
01/10/2017 MMouse Soldering 1000 Shift A Team A
01/10/2017 MMouse Welding 3000 Shift A Team A
01/10/2017 DDuck Soldering 4000 Shift A Team B
01/10/2017 DDuck Welding 1000 Shift A Team B
...
02/11/2017 MMouse Soldering 1100 Shift A Team A
02/11/2017 MMouse Welding 2900 Shift A Team A
02/11/2017 DDuck Soldering 4010 Shift A Team B
02/11/2017 DDuck Welding 900 Shift A Team B每一行代表每个操作员每天所执行的活动,以及在每个活动期间处理的单元数,以及操作符所属的shift和team的分类器(为简单起见,假设这一点不会随着时间的推移而改变)。
为了简洁起见,我省略了换班B的值,但从本质上讲,轮班B的团队成员(通常)将(通常)从轮班A工作到不同的日子,但执行任务的比例通常与A班组或B班组的相应团队相似。
我想解决的问题是:我为另一个操作符"GOofy“处理了日期、活动和单元以及各种其他变量。但我不知道GOofy先生在哪个班组工作。因此,我使用鼠标先生和达克先生(在现实中是几十个人)的数据,看看我是否可以尝试训练kNN来正确猜测每个名字的班次和团队模式,其中包括日期、活动和单位处理字段。
我的想法是:
( a)保持团队和班次分离没有特殊的价值,因此我应该创建一个将两者结合在一起的联合列。
( B)如果我为“焊接”、“焊接”和其他活动创建单独的栏,我可以按日期对每一项活动每天处理的单元数。考虑到所执行的活动类型(我假设)是轮班/团队组合的一个强有力的预测器,那么我应该能够根据该线的日期(可能转换为一个数字日期)和每一行焊接、焊接等的相对值来训练识别shift/team。
问题是,当扩展到测试集时,这只会给我每一天的预测值。但我怀疑工作的日子也是一个重要的预测因素,所以我想把这也包括在内。但我不知道该怎么处理。
我能想到的两种方法是:
选项1:使用kNN为每个操作员/日组合生成shift/team的估计值,x变量为日期、单元焊接和每天焊接的单元,然后为每个操作员计算"Shift A,Team A“、"Shift A,Team B”等被分配给该操作员的时间比例--因此,如果DDuck在90%的时间内被分配为"Shift A,Team A",那么DDuck很可能确实是"Shift A,Team A“。
选项2:以某种方式创建一个变量,该变量表示每个操作符的所有工作时间--尽管我不知道如何做到这一点--从而创建一个包含每个操作符一行的集合。
这些方法中的任何一种有效吗?是否有一种广泛使用的替代方法?
请注意,这并不是与kNN和时间序列数据有关的问题的重复,因为这些问题与预测有关,而我试图分析回顾性数据。
发布于 2020-05-16 05:18:42
你有更多的数字功能吗?KNN的工作距离(欧几里德,L1等)这需要数字数据。它不接受分类数据。您的活动特性将不适用于KNN,甚至将日期转换为整数只会创建一个在KNN中性能不佳的时间序列。我觉得你走错路了。尝试logistic回归。它将兼具分类和数字功能。
保持团队和班次分离没有什么特别的价值,所以我应该创建一个将两者结合在一起的联合列。
我会为团队和班次建立两个独立的模型。您将获得更高的准确性,因为您使用数据来预测更少的类,并让模型专门处理每个任务。
总的来说,我会使用逻辑回归,而不是KNN。这更适合你的问题。希望这能有所帮助。
https://datascience.stackexchange.com/questions/31536
复制相似问题