【问题标题】:How to check the accuracy of k-means clustering in python? How to know what the predicted variables represent in k-means algorithm? [closed]如何检查python中k-means聚类的准确性?如何知道预测变量在 k-means 算法中代表什么? [关闭]
【发布时间】:2021-06-23 00:38:49
【问题描述】:

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

【问题讨论】:

  • 我投票结束这个问题,因为它与 help center 中定义的编程无关,而是关于 ML 理论和/或方法 - 请参阅 machine-learning @ 中的介绍和注意事项987654323@.

标签: machine-learning cluster-analysis k-means unsupervised-learning


【解决方案1】:

K-Means 算法不是分类器,而是聚类算法。这意味着它不会为您提供从特征到癌症类别的映射。它只在特征空间中找到集群(相关数据点的子集)。

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

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

  • 集群 0 中有多少数据点实际上是 2 类癌症?
  • 集群 1 中有多少数据点实际上是 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 中的数据点;计算其中有多少人患有 4 级癌症 -> 这将是您的真正阳性结果。
  2. 现在只取簇 0 中的数据点;计算其中有多少人患有 2 级癌症 -> 这将是您的误报。
  3. 重复否定。

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

【讨论】:

  • 我检查了计数...predicted:::1 -> 451,0 -> 232 original:::2 ---> 444,4--->239 ... 所以这不是说有病的人记为0,没有病的人记为1吗?
  • 你建议如何使用混淆矩阵来检查准确性??
  • 要获得相关性:您必须计算 k-means 聚类 1 中的癌症类别 4,而不是总值。有关详细信息,请参阅我的编辑
  • 花点时间尝试深入了解混淆矩阵的工作原理。如果您掌握了理论,您将能够将其应用于您的具体问题。
猜你喜欢
  • 2019-08-17
  • 2012-01-01
  • 2017-12-08
  • 2016-02-01
  • 2010-12-20
相关资源
最近更新 更多