gpt4 book ai didi

r - 将数字编码为分类向量

转载 作者:行者123 更新时间:2023-12-04 12:23:08 28 4
gpt4 key购买 nike

我有一个整数向量 y <- c(1, 2, 3, 3)现在我想将它转换成这样的列表(一个热编码):

1 0 0 
0 1 0
0 0 1
0 0 1

我试图用 to_categorical 找到一个解决方案,但我在数据类型方面遇到了问题......有没有人知道这个任务的智能和流畅的解决方案?

这是我的尝试:
 for (i in 1:length(y)) {
one_character <- list(as.vector(to_categorical(y[[i]], num_classes = 3)))
list_test <- rbind(list_test, one_character)
}

但我收到以下错误:
Error in py_call_impl(callable, dots$args, dots$keywords) : 
IndexError: index 3 is out of bounds for axis 1 with size 3

最佳答案

这是 base R 中的一种方式.创建一个 matrix 0 并根据行的顺序和 y 值作为列索引分配 1

m1 <- matrix(0, length(y), max(y))
m1[cbind(seq_along(y), y)] <- 1
m1
# [,1] [,2] [,3]
#[1,] 1 0 0
#[2,] 0 1 0
#[3,] 0 0 1
#[4,] 0 0 1

base R ,我们也可以
table(seq_along(y), y)
# y
# 1 2 3
# 1 1 0 0
# 2 0 1 0
# 3 0 0 1
# 4 0 0 1

或者另一个选项是 model.frame来自 base R
model.matrix(~factor(y) - 1)

关于r - 将数字编码为分类向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52954346/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com