k原型的实现

时间:2019-05-02 16:11:41

标签: r

我有一个混合的数字和分类变量数据集。我试图实现基于的kprototype https://www.kaggle.com/rahultej/k-prototypes-correlation-randomforesthttps://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)

1 个答案:

答案 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)