繁体   English   中英

这段代码片段究竟做了什么?

[英]What does this code snippet do exactly?

int max = 0, id = 0;
int indx= 0;

vector<int> clusters(k,0);

for (size_t i = 0; i < bestLabels.size(); i++)
{
    id = bestLabels[i];
    clusters[id]++;

    if (clusters[id] > max)
    {
        max = clusters[id];
        indx = id;
    }
}

这段代码通过 K-Means Clustering 计算最大的集群,但我不太明白“clusters[id]++;”是如何计算的。 和“集群[id]”工作。 他们具体做什么? 任何人都可以详细解释for循环内发生的过程吗? 任何帮助将不胜感激。 谢谢!

以下行:

vector<int> clusters(k,0);

定义一个由k个整数组成的随机访问集合,每个整数的初始值为clusters[id]访问存储在向量中索引id处的整数值。 clusters[id]++递增存储在索引id处的整数值。 这是有效的,因为向量上的operator []返回对索引项的引用,允许修改。

for 循环遍历bestLabels的标签,并根据它们出现的频率对它们进行评分( clusters[id]++ - 这部分增加了分数或频率)。 它还跟踪最常见的标签——这就是if (clusters[id] > max)条件的子句所做的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM