我有一系列实例,每个实例都有一份列表,代表它所遵循的不同步骤。例如:
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 -> 100100 -> 200200 -> 100100 -> 200200 -> 300300 -> 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 "存在循环"else: print "不存在循环"