【问题标题】:Summarizing Variables to apply PCA汇总变量以应用 PCA
【发布时间】:2021-10-28 16:50:20
【问题描述】:

在我需要分析的数据中,给出了字符和因子变量。我使用一种热编码将字符变量转换为因子,并将所有内容保存在一个新的数据框中。 为了进行主成分分析,我需要将一个热编码变量汇总为原始变量,但我不知道该怎么做。

例如:原始变量“beds”有 4 个唯一值 - “couch”、“real bed”、“airbed”、“futon”。通过一次热编码,这些值中的每一个都被分配给每个案例 1 或 0,因此新矩阵“beds”有 4 个新变量,它们曾经是变量“bed”的值。 this is how it looks after one hot encoding & scaling it 如何回到原始格式 like this one 执行 PCA?我的意思是 - 我如何对新变量进行分组以便 PCA 有意义?我在考虑子列like this,但我不知道这是否是正确的方法,也不知道该怎么做,因为如果我将新变量保存到这样的单独数据框中:

df_mw_neu_bed V1_Real Bed)

& 把它们放在一起,我就是从这里开始的,对于 PCA,我想使用“df_mw_neu_bed”和其他数据框,即房间类型(格式相同)

非常感谢您的帮助! :)

【问题讨论】:

  • 你能解决你的问题吗?如果我理解正确的话,您想恢复由于 one-hot-encoding 而丢失的数据。
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
  • @MartinGal 我必须预先对 airbnb 数据集进行聚类并运行 PCA。为此,我必须通过一种热编码将字符变量转换为数字变量。但是,这会将值转换为新变量。为了执行逻辑上正确的 PCA,我需要将这些新变量汇总到旧变量中/以某种方式将它们分组到原始变量中。我在考虑子列,但我不确定如何去做。如果我不这样做,我会尝试用单人床和房间类型来描述数据集(参见上图中的数据集片段),这在逻辑上没有意义

标签: r datatable pca one-hot-encoding


【解决方案1】:

这是一个示例:

  1. 对来自iris 数据集的因子列进行一次热编码(= 将具有多个类别的分类变量转换为多个变量,每个变量的值为 1 或 0。
  2. 转换回来
# 1. one-hot encoding
iris_coded <- iris %>% 
    cbind(sapply(levels(.$Species), `==`, .$Species)) %>% 
    select(6:8) %>% 
    mutate(across(everything(), as.integer))

# 2. convert back 
w <- which(iris_coded==1, arr.ind = TRUE)
iris_coded$tranformed <- toupper(names(iris_coded)[w[order(w[,1]),2]])

iris_coded

【讨论】:

    猜你喜欢
    • 2020-10-25
    • 1970-01-01
    • 2020-05-25
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 2017-01-11
    相关资源
    最近更新 更多