[英]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.