我正在使用sklearn中的AffinityPropagation进行聚类。
使用clustering.labels_
与在相同的训练数据上进行clustering.predict
会产生不同的结果(尽管几乎相同)。
对为什么这是真的有任何见解吗?
答案 0 :(得分:3)
除了k-means-family以外,请勿将void del_list(stud* &orig_head)
{
cout << "Deleting entire list..." << endl;
delete orig_head;
orig_head = nullptr;
}
用于任何聚类。
如果您执行predict
,则将通过相似性传播来计算结果。
如果您调用 fit
,则实际上不是 做AP 。取而代之的是,它只是找到每个点的最近样本。正如您所观察到的那样,这可能会或可能不会产生相同的结果。由于最有可能是近点,因此很有可能是正确的-但它没有进行任何形式的亲和力 propagation 传播,这是与示例最接近的分类。
k-means很好,因为它使用最近的中心逻辑。但这通常不适用于群集。通常,聚类算法无法预测样本外数据。为此,您需要一个分类器。