【问题标题】:K Means based on mixed type dataframe基于混合类型数据框的 K 均值
【发布时间】:2019-05-04 07:41:05
【问题描述】:

我有以下数据集,我想对其应用聚类(尤其是 k-means)。

     id      category     value
0    122         A          3
1    122         B          4
2    122         C          9
3    145         A          19
4    145         B          22
5    145         C          90
.
.
. 
197    225         A          16 
198    225         B          17
199    225         C          12

我想要做的是创建 id 集群。例如,每个集群应该包含一些基于类别值计算的相似性度量的 id。

例如:C1 {122, 145, 148} C2{ 225, 222, 221} ....

你知道如何处理这类问题吗?

【问题讨论】:

  • 相似度标准是什么?

标签: python pandas cluster-analysis k-means


【解决方案1】:

我假设有从 A-Z 的类别,并且有许多行属于同一类别。 K-means 算法的工作原理如下所述。从您的问题来看,不清楚什么是相似性度量。一旦我更清楚集群目标是什么,我会更新我的答案。

更新:再次查看数据并注意到@Anony-Mousse 的评论后,我假设问题是:给定三个类别 A、B、C 及其各自的值和标签 (Ids),根据一些相似性度量(可以是欧几里得距离、余弦距离或其他一些)。我正在更新我之前的答案以匹配上述假设。

解析数据并生成三个数字或 one-hot 编码特征,代表每个 Id 的类别 A、B 和 C 的值。

K:输入

重复直到收敛:

  • 随机初始化 3 维簇质心 U1 到 Uk。
  • 对于每个 Id,找到类别值和聚类质心之间欧几里得距离的最小总和。将该簇质心分配为 当前 ID 的新聚类中心。
  • 对于每个集群,通过平均分配给它的所有样本 (Id) 的特征来重新计算其质心。

收敛可能发生在集群质心不变或每个质心的变化小于作为输入提供的小值时。

【讨论】:

  • 没有。这样他每个 id 仍然有三行!
  • 我假设将首先清理数据并删除重复项,编辑我的答案以包含该详细信息。
  • 这些不是重复的。每个 id 对每个类别都有 1 个值。看我的回答...
  • 这不是 OP 想要的,他想创建一个 id 集群。
  • 是的,每个ID都有三行,为每个ID存储三个值A,B和C......我没有组成pivot操作。它是一个内置的......看看它的作用,你会发现它是在这里做的正确的事情。
【解决方案2】:

Pivot将您的数据转换成适当的形状:

您的类别应该是列,而不是单独的行。

     id          A          B         C
1    122         3          4         9
2    145         19         22        90
..

不要忘记排除 ID 列进行分析!聚类时切勿包含 ID。为了分析,您的数据应该只有 A、B、C 列;每个 ID 一行。这样你就有了一个 n x 3 矩阵,那么你可以使用 k-means 就好了。

【讨论】:

    猜你喜欢
    • 2015-07-23
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 2017-05-11
    • 2023-03-11
    • 2022-11-24
    相关资源
    最近更新 更多