我有许多实例,每个实例都有自己的列表,表示它遵循的不同步骤。例如:
1284 -> [0, 100, 200, 100, 200, 300, 600]
1285 -> [0, 100, 200, 100, 200, 300, 500, 999]
1286 -> [0, 100, 200, 300, 600]
...
13023 -> [0, 100, 170, 100, 200]
例如,实例 1284 像这样经历 0 到 600 的步骤
0 -> 100
100 -> 200
200 -> 100
100 -> 200
200 -> 300
300 -> 100
我已经设法获得了每个实例的路径列表,但我想找到带有循环的实例并对其进行分类。例如实例1284两次经历步骤100和200。
我想知道如何做到这一点。我想到了scikit learn的无监督分类,但我不熟悉它,我不知道如何对这些列表进行分类。
一些帮助将不胜感激。 谢谢!
我认为您可以使用以下技巧来执行此操作,而无需任何机器学习
- 将步骤列表更改为集
- 现在将集合的大小与原始步骤的大小进行比较
- 如果大小相同,则所有不同的步骤都不同
- 否则有一个循环
我基于这个算法的假设,如果没有循环,那么所有步骤都是不同的。
list_1284 = [0, 100, 200, 100, 200, 300, 600]
set_1284 = set(list_1284)
if len(set_1284) != len(list_1284):
print "There exists a loop"
else:
print "No loop exists"