Javascript 使用K表示根据领导者的得分将人员映射到一个组

Javascript 使用K表示根据领导者的得分将人员映射到一个组,javascript,data-science,cluster-analysis,cluster-computing,k-means,Javascript,Data Science,Cluster Analysis,Cluster Computing,K Means,我正在尝试创建一种算法,将人与团队的领导者进行匹配。我发现K意味着集群,我认为这是一个方向。这个项目是用javascript编写的,所以我在npm上找到了实现K-means的。现在我很困惑,因为我找不到任何类似的例子,但是如果我有20个人根据他们的领导能力给4个人打分,我该如何格式化我的数据,以便k-means将这20个人分配给小组 准确地说:根据该屏幕截图,我试图将追随者2-20映射到领导者L1-L4,基于他们的领导者得分0,0.5,1,1.5,其中1.5是最高得分(最短距离)。理想情况下有

我正在尝试创建一种算法,将人与团队的领导者进行匹配。我发现K意味着集群,我认为这是一个方向。这个项目是用javascript编写的,所以我在npm上找到了实现K-means的。现在我很困惑,因为我找不到任何类似的例子,但是如果我有20个人根据他们的领导能力给4个人打分,我该如何格式化我的数据,以便k-means将这20个人分配给小组

准确地说:根据该屏幕截图,我试图将追随者2-20映射到领导者L1-L4,基于他们的领导者得分0,0.5,1,1.5,其中1.5是最高得分(最短距离)。理想情况下有相似大小的群体

我所尝试的:

var data = [[0.5,0.5,0,0],
            [1.5,0,0.5,0],
            [1.5,0,1.5,1],
            [1.5,0.5,0,0],
            [0.5,1.5,0,1],
            [0.5,1.5,0.5,1],
            [0.5,0.5,1,0],
            [1,0,1,1],
            [1.5,1.5,1,0.5],
            [0.5,1,0.5,1],
            [1,1,1,1],
            [1.5,1.5,0.5,1],
            [1,1.5,1,0.5],
            [0,1.5,0.5,1.5],
            [1.5,1,0.5,0],
            [0.5,0,0,1.5],
            [0.5,0,0,1.5],
            [1.5,0.5,1.5,1],
            [0.5,1.5,1,1]];

var res = skmeans(data,4);

但这只是根据谁对领导者进行了类似的评分来将追随者分组,而不是将领导者作为质心。打开其他聚类格式,或者如果我完全偏离了完成此任务的更好算法的目标信息。

K-means clustering在此所做的是获得4个任意点,并计算到每个数据点的最短距离,以根据您的要求创建4个聚类。然后得到第一次迭代后形成的每个簇的平均值,为下一次迭代定义质心。因为第一次迭代需要任意点,所以得到的结果是显而易见的

将预期引线定义为质心,而不是让算法获取任意点作为质心,可能会有所帮助

skmeans(data,k,[centroids],[iterations])

参考资料:

我尝试了
var中心=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1];var res=skmeans(数据,4,中心)并且它根本没有改变输出,它忽略了我的质心并使用了其他质心。还尝试使用列表中的4个精确条目
[0.5,0.5,0,0],[1.5,0,0.5,0],[1.5,0,1.5,1],[1.5,0.5,0,0],
,这也不起作用,它忽略了它们(输出的质心完全不同)。也尝试过只使用[1,2,3,4],虽然维度较少,但我的意图显然不起作用。添加
var center=[[1.5,0,0,0,0],[0,1.5,0,0],[0,0,1.5,0],[0,0,0,1.5,0]。它是每个维度的最大值。它将始终以4个质心结束,其中的值是簇的平均值。K-means是一种分类算法,您无法从该算法中获取前导数据点。作为一个建议(这可能不太理想),你可以做的是单独检查新创建的集群,并获得一个维度的最大值作为先导的数据点。是的,在过去的一个小时左右,我终于意识到K-means的工作原理与我想象的略有不同。谢谢你的评论,它帮助我得出了这个结论。在使用1后不久,我确实尝试了1.5的值,但忘记了值没有标准化。我想我可能需要回到我的算法方面。