是否有 R 函数可以在分类问题中重新标记簇?

问题描述 投票:0回答:2

我有一个 $N imes T$ 矩阵,其中 $N$ 是观察次数,$T$ 是我的特定算法的迭代次数。

对于每次迭代,我使用的函数都会将 $N$ 观测值聚类为多个聚类。请注意,簇的数量可能会因迭代而变化,并且簇不一定按存在顺序填充。

例如,对于 $N = 10$ 个观测值,对于迭代 $t = 1$,该函数可能会将矩阵的第一列填充为:

11, 4, 10, 21, 23, 3, 17, 9, 4, 17
,即,观测值 1 分配给聚类 11,观测值 2 为分配给集群 4,依此类推。

我想更改此向量/列,使簇按存在顺序填充,即我希望上述分类向量变为:

1, 2, 3, 4, 5, 6, 7, 8, 2, 7

R 中是否有一个函数可以为我执行此操作,或者任何人都可以建议几行代码来实现单个分类向量的所需输出,并且我可以将其扩展到我的整个矩阵?

r classification cluster-analysis
2个回答
1
投票

如果你有一个向量

x <- c(11, 4, 10, 21, 23, 3, 17, 9, 4, 17)

如果你只想为每个级别分配唯一的ID,你可以使用

match(x, unique(x))
# [1] 1 2 3 4 5 6 7 8 2 7

as.integer(factor(x, levels=unique(x)))
# [1] 1 2 3 4 5 6 7 8 2 7

1
投票

矩阵示例

your_matrix <- matrix(c(11, 4, 10, 21, 23, 3, 17, 9, 4, 17,
                        12, 5, 11, 22, 24, 4, 18, 10, 5, 18), ncol = 2)

按照每列的存在顺序重新标记簇

reordered_matrix <- apply(your_matrix, 2, function(x) as.numeric(factor(x, levels = unique(x))))

打印结果

print(reordered_matrix)

© www.soinside.com 2019 - 2024. All rights reserved.