找到重复的序列

时间:2016-01-11 13:00:10

标签: c# algorithm logic data-mining

我需要帮助找到合适的算法来解决我的目标。

让我们说我有一个关于某些事件的10000条记录的数据集。我有50种事件类型,因此我的数据集中的每条记录都分配了一些事件(从1到50)。

我的数据集示例(2列:记录编号,事件编号):

1. 13
2. 24
3. 6
4. 50
5. 24
6. 6
...
10000. 46

正如你在本例中所看到的,我有一个重复序列的数字24,6。现在我想知道我的数据集中有多少这些以及其他未知序列。我还想知道每个序列的多样性。我检查过Rabin-Karp算法,但在我看来,我必须首先指定模式/序列。但是,我希望该算法能够自行找到它。

我被告知要查看分层聚类,但我不确定它是否符合我的要求。

总而言之,我想找到一种算法,可以在上面的数据集中找到所有重复序列及其多样性。

2 个答案:

答案 0 :(得分:0)

我假设您将这些数据放在一个文本文件中,其结构与您提供的相同, 我使用LINQ对每个值进行分组和计数,如下面的代码所示:

static void Main(string[] args)
    {
        //read lines from the text file
        var arr = File.ReadAllLines("dataset.txt").AsQueryable();
        //convert the data to List<object> by convert each line to anonymous object
        var data = arr.Select(line => new { Index = line.Split('.')[0], Value = line.Split('.')[1] });
        //group the data by the value and then select the value and its count
        var res = data.GroupBy(item => item.Value).Select(group => new { Value = group.First().Value, Count = group.Count() });
        //printing result
        Console.WriteLine("Value\t\tCount");
        foreach (var item in res)
        {
            Console.WriteLine("{0}\t\t{1}",item.Value,item.Count);
        }
        Console.ReadLine();
    }

The result of previous code

希望这会对你有所帮助。

答案 1 :(得分:0)

使用十几个

中的任何一个

Sequential Frequent Pattern Mininig

算法已发布。

他们的目的是发现这样的模式:购买产品的客户,第二天往往会回来购买电缆b。