我需要帮助找到合适的算法来解决我的目标。
让我们说我有一个关于某些事件的10000条记录的数据集。我有50种事件类型,因此我的数据集中的每条记录都分配了一些事件(从1到50)。
我的数据集示例(2列:记录编号,事件编号):
1. 13
2. 24
3. 6
4. 50
5. 24
6. 6
...
10000. 46
正如你在本例中所看到的,我有一个重复序列的数字24,6。现在我想知道我的数据集中有多少这些以及其他未知序列。我还想知道每个序列的多样性。我检查过Rabin-Karp算法,但在我看来,我必须首先指定模式/序列。但是,我希望该算法能够自行找到它。
我被告知要查看分层聚类,但我不确定它是否符合我的要求。
总而言之,我想找到一种算法,可以在上面的数据集中找到所有重复序列及其多样性。
答案 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();
}
希望这会对你有所帮助。
答案 1 :(得分:0)
使用十几个
中的任何一个算法已发布。
他们的目的是发现这样的模式:购买产品的客户,第二天往往会回来购买电缆b。