gpt4 book ai didi

c# - 聚类非矩阵字符串数组

转载 作者:行者123 更新时间:2023-11-30 09:46:48 26 4
gpt4 key购买 nike

我正在寻找一种方法来实现能够对字符串数组进行聚类的聚类算法。

假设输入如下:

string[][] input =
{
new string[] { "A", "B", "C", "D", "F", "G"},
new string[] { "D", "F", "G", "H"},
new string[] { "A", "B", "C", "G"},
new string[] { "B", "C", "Z", "A", "F"},
new string[] { "O", "N", "P", "X"}
};

算法应该能够识别项目 0、2 和 3 位于同一簇。但我该怎么做呢?

我尝试了什么?我一直在尝试使用 Accord.net 框架来构建 KMeans 集群。但我注意到 Kmeans 只适用于双数(因此我将 string[] 中的每个值转换为数字并再次尝试)。作为距离测量,我实现了 Jaccard距离。

在此之后,我收到一条错误消息,指出“点矩阵应该是矩形”。这是有道理的,因为我的输入不是矩形矩阵。

所以我问你们:我该如何实现这个?在这种情况下对项目进行聚类的最佳方法是什么?有什么想法或建议吗?

代码示例:

double[][] inputs =
{
new double [] { 0, 1, 2, 3, 4 },
new double [] { 0, 1, 5, 2, 3, 4 },
new double [] { 33, 0, 1, 5, 2, 4 },
new double [] { 0, 1, 2, 6, 7, 8},
new double [] { 0, 9, 1, 2, 6, 8 },
new double [] { 0, 4, 10, 15, 11, 12, 13 },
new double [] { 0, 4, 14, 15, 11, 12, 13, 16 },
new double [] { 0, 17, 18, 11, 19, 12, 20},
new double [] { 0, 17, 18, 11, 19, 12, 20, 15, 26},
new double [] { 0, 4, 14, 15, 11, 12, 13, 16, 17, 18 },
new double [] { 0, 21, 22, 23, 24, 26, 25},
new double [] { 24, 26, 27, 21, 28, 29, 1},
new double [] { 24, 243, 26, 30},
new double [] { 31, 24, 22, 23, 0, 11, 26 }
// Many others...
};

var kmeans = new KMeans(k: 3, distance: new JaccarDistanceDouble() );
var clusters = kmeans.Learn(inputs); // Throws the error.
int[] labels = clusters.Decide(inputs);

最佳答案

K 均值需要连续变量。

因为它需要计算平均值。因此得名。

因此,您不能对此数据使用 k-means。

相反,选择其他聚类算法。但我怀疑集群是否能解决你的问题(但你没有解释你的问题)。更有可能的是,诸如频繁项集挖掘之类的其他方法将是正确的方法。

关于c# - 聚类非矩阵字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51465960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com