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

时间:2018-06-19 13:35:33

标签: 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 -> 200
200 -> 100
100 -> 200
200 -> 300
300 -> 100

我设法获取了每个实例的路径列表,但是我想找到带有循环的实例并对它们进行分类。例如,实例1284两次执行步骤100和200。

我想知道怎么做。我想到了使用scikit learning进行无监督分类,但是我对此并不熟悉,也不知道如何对这些列表进行分类。

一些帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

我认为您可以使用以下技巧来进行此操作而无需任何机器学习

  1. 将步骤列表更改为一组
  2. 现在将集合的大小与原始步骤的大小进行比较
  3. 如果大小相同,则所有步骤都是不同的
  4. 否则会有一个循环

我基于这种算法的假设是,如果没有循环,那么所有步骤都是不同的。

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"

答案 1 :(得分:0)

我认为您可以使用诸如聚类之类的无监督机器学习算法,该算法会将您的相似实例分为一组,称为聚类。

在scikit中可以使用聚类算法,您可以通过下面的链接

http://scikit-learn.org/stable/modules/clustering.html#clustering