Python 3.x 有没有一种方法可以使用scikit的无监督方法来学习将一些列表分为不同的组?

Python 3.x 有没有一种方法可以使用scikit的无监督方法来学习将一些列表分为不同的组?,python-3.x,pandas,machine-learning,scikit-learn,unsupervised-learning,Python 3.x,Pandas,Machine Learning,Scikit Learn,Unsupervised Learning,我有很多实例,每个实例都有自己的列表,它表示它遵循的不同步骤。例如: 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 ->

我有很多实例,每个实例都有自己的列表,它表示它遵循的不同步骤。例如:

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"

我不知道布景的结构,非常感谢。有了它,我将能够真正检测到循环。但是,有不同类型的循环,我想将这些循环分为不同的组。例如,当有一个、两个或三个循环时。这就是我想到机器学习的原因。你可以看看networkx来获得你需要的功能。将其划分为不同类型的循环是一个完全不同的问题。它可以通过使用networkx包中的各种函数来查找循环等来完成。我认为您可以使用无监督的机器学习算法,如聚类,它将相似的实例划分为一个称为聚类的组。在scikit中,集群算法是可用的,您可以浏览下面提到的链接