加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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
  (Intercept) a1c a1f
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
     b c f
[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)
  a1 a2 b c f
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
}

0

阅读 收藏 喜欢 打印举报/Report
前一篇:文本聚类
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有