我有一个混合的数字和分类变量数据集。我试图实现基于的kprototype https://www.kaggle.com/rahultej/k-prototypes-correlation-randomforest 和 https://journal.r-project.org/archive/2018/RJ-2018-048/RJ-2018-048.pdf
因此,基本上,我只是删除了数据框中包含NA的列,并尝试实现kprototype,而不对分类变量进行任何数据转换。
包含分类数据的列中没有相同数量的分类。 示例:X列有4个类别,Y列有15个类别。我不确定kprototype是否适用于这种情况?
我遇到以下错误
Ops.data.frame(x [,j],rep(protos [i,j],nrows))中的错误: 长度1043的列表没有意义
我还尝试将分类变量转换为数值。我还没有使用过比例功能。当我将分类变量转换为数值时,会引发错误 “ x中没有因子变量!尝试使用kmeans()...”
data_kproto <- kproto(data, k = 4)
答案 0 :(得分:0)
将所有超过2个水平的因子转到单独的列。将数字数据缩放为z分数。确保数据是数据帧。
# Turn to dummies
library(caret)
dummies <- dummyVars(" ~ .", data)
data <- data.frame(predict(dummies, newdata = data))
# Scale
data <- scale(data[,c("numeric_1", "numeric_2")])
# Check data frame
data <- as.data.frame(data)
# kproto
data_kproto <- kproto(data, k = 4)