我的同事和我(都是机械工程师)喜欢学习python并解决新的有趣的问题。
我们的问题:,我们希望分析组件的价值流(> 50.000),并根据它们的价值流的相似性对它们进行分组。
举个例子,假设我们有三种材料A、B和C,它们的数据如下:
A= 610384,521056,112200,194825633,45
B= 10389,462,1028503
C= 10389,462,1028503,112200,45,194825633
每个数组表示一个值流,每个元素表示值流中的每台机器。例如,要生产,必须运行5台以上的机器。"610384“是值流中第一台机器的数目。如您所见,A和B与C相似,因为B是C的100%子流,但是A包含3台相同的机器,但顺序不同。
约束:
anything
4个层次的例子:手动钻井(1) ->钻井(2) ->钻孔90度(3) ->机器编号462 (4)
问题:
我们是否应该使用合适的算法?我们需要自己来定义规则吗?如果是的话,你能推荐阅读吗?
我们的目标:集团类似的价值流,这样我们就可以看到我们的价值流高速公路,看看机器是否应该被移动。
PS:这是Reddit r/analytics的调整后的转发
发布于 2019-11-19 08:43:10
这可能是部分解决方案,
我使用了以下缩写。收视率:
md -手工钻孔,d-钻孔,30或45或60 -在一定程度上钻孔
1)机器10389等级:'md-d- 90 -10389‘#手动钻+钻+90度
2) 462定级机:'md-d- 45 -462‘#手动钻+钻+45度
import fuzzywuzzy
from fuzzywuzzy import process
matches = fuzzywuzzy.process.extract('md-d-90-10389',['md-d-45-462'],scorer=fuzzywuzzy.fuzz.token_sort_ratio)
print(matches[0][1], '%')产出: 33 %
有许多方法可以像余弦相似或Jaccard相似这样做。我们可以先试试这个。
如果相似度大于80%,则只保留一台机器。让我们只取两个值流A和C,如果521056和10389有80%的相似性,那么我们只能为了简化而丢弃其他流。我们留10389块吧。
A= 610384,10389,112200,194825633,45 #取代521056至10389
C= 10389,462,1028503,112200,45,194825633
然后,我们可以通过检验A和C之间的余弦相似性来评估价值流的贴近度。
https://stackoverflow.com/questions/58929177
复制相似问题