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聚类计算最大的聚类,但我不太明白“clusters [id] ++;”和“cluster [id]”工作。他们到底做了什么?谁能请详细解释for循环中发生的过程?任何帮助将受到高度赞赏。谢谢!
答案 0 :(得分:1)
以下一行:
vector<int> clusters(k,0);
定义k
个整数的随机访问集合,每个整数的初始值为0. clusters[id]
访问存储在向量中的索引id
的整数值。 clusters[id]++
递增存储在索引id
处的整数值。这是有效的,因为向量上的operator []
返回对索引项的引用,允许修改。
答案 1 :(得分:0)
for循环遍历bestLabels
中的标签,并根据它们出现的频率对其进行评分(clusters[id]++
- 此部分会增加分数或频率)。它还跟踪最常见的标签 - 这是if (clusters[id] > max)
条件的条款。