在K-Means算法中找到最佳K值(Apache Spark)

我正在进行一个涉及使用K-means模型进行异常检测的项目。

然而,为了获得几乎精确的结果,我需要找到最佳的K值。

我的算法基于这样一个理念:模型中的异常值通常会被单独分配到一个聚类中。通常“正常”的数据会与其他正常数据聚集在一起,而异常数据会形成自己的聚类,从而指示出异常。然而,我需要找到最佳的K值,使我的算法能够正常工作,并判断其效果是否良好。

关于如何找到一个好的K值,有什么建议吗?

这是一个包含“正常”虚拟数据的样本文件,我将用它来训练我的模型:

Name    Size    RecordsFile1   1013    105727File2   990     104230File3   1520    110542File4   2198    115369File5   2026    113430File6   1844    112105File7   1216    108159File8   1520    110408File9   1013    105359File10  1317    108428File11  1925    112553File12  1449    109456File13  1803    111436File14  2036    115937File15  2043    116383

回答:

使用K-means的层次版本。Apache Spark有BisectingKMeans,它以这种方式工作。它根据你拥有的记录数量计算一个好的K值。这样,你在创建模型时就不需要定义K(聚类)。如果你对它分配的K值不满意,你仍然可以设置一个K值,但通常它运作得很好。

感谢@【隐藏人名】的建议。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注