如何为基于距离的数据挖掘创建虚拟变量?

时间:2015-10-10 22:25:49

标签: r data-mining dummy-variable splitstackshape

我有一个包含来自美国社区调查的几个名义变量的数据集。我正在使用R来管理数据,并将在Weka和/或SAS Miner中执行数据挖掘技术。 (我还没有在R中尝试过任何数据挖掘。)

示例数据:

Data <- data.frame(id = c(1:3), earnings = c(10, 20, 30),
    ST = as.factor(10:12), 
    COW = as.factor(1:3))

我想使用一些计算距离的数据挖掘函数,例如k-nearest-neighbor。我的理解是,我需要按照以下几行进行虚拟编码:

#   id earnings ST_1 ST_2 ST_3 COW_1 COW_2 COW_3
# 1       10    1    0    0     1     0     0
# 2       20    0    1    0     0     1     0
# 3       30    0    0    1     0     0     1

1)cSplit_e似乎一次只取一个变量,所以我使用apply函数如下。有更有效的方法吗?

library(splitstackshape)    

tosplit <- c("ST", "COW")

splitfunc <- function(x) {
    res <- cSplit_e(Data[x], x, mode = "binary", fill = 0, drop = T)
    return(res)
}

splitres <- lapply(tosplit, splitfunc)

dummies <- do.call(cbind, splitres)
binarized <- cbind("id" = Data$id, "earnings" = Data$earnings, dummies)

2)我是否应该经历这个过程?在R中,大多数函数会在需要时自动执行此操作,对吧?大多数其他节目都是如此吗?

0 个答案:

没有答案