如何检查Python中K-means聚类的准确性?如何了解K-means算法中预测变量的含义?

我尝试进行聚类的DataFrame

上面的DataFrame代表用于判断是否患有癌症的属性。类别表示一个人是否患有癌症。类别2表示此人未患癌症,4表示此人患有癌症。当我尝试在移除类别和ID后的DataFrame上使用K-means时,所有行的预测结果都是0和1。但现在我很困惑,0/1是否等同于2。如何解决这个问题,以及如何检查模型的准确性?


回答:

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

因此,输出0/1是每个数据点对找到的聚类的归属。

如果你想检查聚类是否与癌症类别相关,可以进行以下分析:

  • 聚类0中有多少数据点实际属于癌症类别2?
  • 聚类1中有多少数据点实际属于癌症类别4?

还可以参考混淆矩阵来了解如何评估此类问题。

你的混淆矩阵应该如下所示:

+-----------------+-----------------------+-----------------------+|                 | 实际癌症类别4        | 实际癌症类别2        |+-----------------+-----------------------+-----------------------+| K-Means类别0   | 真阳性                | 假阳性                || K-Means类别1   | 假阴性                | 真阴性                |+-----------------+-----------------------+-----------------------+
  • 真阳性:算法预测有癌症且此人确实有癌症
  • 假阳性:算法预测有癌症但此人没有癌症
  • 假阴性:算法预测无癌症但此人实际上有癌症
  • 真阴性:算法预测无癌症且此人没有癌症
  1. 仅选择聚类0中的数据点;计算其中有多少属于癌症类别4 —— 这些将是你的真阳性。
  2. 现在仅选择聚类0中的数据点;计算其中有多少属于癌症类别2 —— 这些将是你的假阳性。
  3. 对阴性重复上述步骤。

准确率可以通过以下公式计算:acc = (TP+TN) / (TP+FP+FN+TN)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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