如何检查 python 中 k-means 聚类的准确性?如何知道预测变量在 k-means 算法中代表什么?

How to check the accuracy of k-means clustering in python? How to know what the predicted variables represent in k-means algorithm?

以上数据框表示确定我是否患有癌症的属性。 class代表这个人是否患有癌症。 Class-2代表没有癌症,4代表得了癌症。当我通过删除 class 和 id 在数据帧上尝试 K-means 时,我得到的所有行的预测都是 0,1。但是现在我很困惑 0/1 是否等于 2。如何解决这个问题以及如何检查我的模型的准确性。

K-Means 算法不是 class 算法,而是一种聚类算法。这意味着它不会为您提供从特征到癌症的映射 class。它仅在特征 space.

中找到聚类(相关数据点的子集)

因此输出 0/1 是每个数据点对找到的聚类的成员资格。

如果您想检查聚类是否与癌症相关 classes,请进行分析:

  • 簇 0 中有多少数据点实际上是癌症 class 2?
  • 聚类 1 中有多少数据点实际上是癌症 class 4?

另请参阅 confusion matrix 以获取有关如何评估此类问题的信息。

您的混淆矩阵应如下所示:

+-----------------+-----------------------+-----------------------+
|                 | actual cancer class 4 | actual cancer class 2 |
+-----------------+-----------------------+-----------------------+
| k-Means class 0 | true positive         | false positive        |
| k-Means class 1 | false negative        | true negative         |
+-----------------+-----------------------+-----------------------+
  • 真阳性:算法预测癌症而人确实患有癌症
  • 假阳性:算法预测癌症但人没有癌症
  • 假阴性:算法预测没有癌症但人实际上患有癌症
  • 真阴性:算法预测没有癌症,人没有癌症
  1. 只取集群0中的数据点;数一数其中有多少人患有癌症 class 4 -> 这将是您的真阳性。
  2. 现在只取集群 0 中的数据点;计算其中有多少人患有癌症 class 2 -> 这将是您的误报。
  3. 对底片重复。

准确度 可以使用以下公式计算:acc = (TP+TN) / (TP+FP+FN+TN)