R语言分类变量转换为哑变量
(2014-05-29 23:03:08)
标签:
it |
分类: R语言 |
数据挖掘的模型对数据的类型有严格的要求,比如K-means模型的输入变量要求是数字型。对于分类变量需要进行哑变量处理。
一、生成测试数据
a1<- c("f","f","b","b","c","c")
a2<- c(1,2,3,4,5,6)
data1 <- data.frame(a1,a2)
二、利用model.matrix函数
t_a2 <- model.matrix(~a1, data1)
> t_a2
1
1 0
1
2
1 0
1
3
1 0
0
4
1 0
0
5
1 1
0
6
1 1
0
三、nnet package的class.ind函数
install.packages("nnet")
library(nnet)
d_a1 <- class.ind(data1$a1)
> d_a1
[1,] 0 0 1
[2,] 0 0 1
[3,] 1 0 0
[4,] 1 0 0
[5,] 0 1 0
[6,] 0 1 0
data2 <- cbind(data1,d_a1)
1 f 1 0 0 1
2 f 2 0 0 1
3 b 3 1 0 0
4 b 4 1 0 0
5 c 5 0 1 0
6 c 6 0 1 0
class.ind 实现代码
class.ind <- function(cl)
{
n <- length(cl)
cl <- as.factor(cl)
x <- matrix( 0,
n , length(levels(cl)) )
x[(1:n) + n*(unclass(cl)-1)]
<- 1
dimnames(x) <-
list(names(cl), levels(cl))
x
}
{
}
前一篇:文本聚类
后一篇:R语言实现K-means聚类