caret的dummyVars函数可以帮助我们很快的建立一套完整的虚拟变量,之前没见过,今天见到了,写下来。
看例子
customers <- data.frame(
id=c(10,20,30,40,50),
gender=c('male','female','female','male','female'),
mood=c('happy','sad','happy','sad','happy'),
outcome=c(1,1,0,0,0))
建立如上的数据框后,我们可以选择将整个数据框虚拟变量化,dummyVars这个函数默认会把所有的分类变量都虚拟化:
dmy <- dummyVars(" ~ .", data = customers)
trsf <- data.frame(predict(dmy, newdata = customers))
print(trsf)
看结果:
看,除了id和outcome之外所有的分类变量都被完全虚拟化了,同时我们还有注意它使用了“~”这个符号,回归符号,这个意思就是something ~ (broken down) by something else or groups of other things;如果像我们这样直接用“~”两边什么变量都不设定,那么就是默认将所有的分类变量虚拟化,如果你只要虚拟化一个变量,你就把那个变量放在“~”的后面,看下例子:
dmy <- dummyVars(" ~ gender", data = customers)
trsf <- data.frame(predict(dmy, newdata = customers))
print(trsf)
此时我们得到的就是只有性别的虚拟变量。
另外,还要给大家介绍的一个参数就是fullRank,这个参数可以自动生成n-1个虚拟变量,而非全部虚拟化,这个操作是经常见的就是为了避免多重共线性。(dummy variable trap)。
看例子:
dmy <- dummyVars(" ~ .", data = customers, fullRank=T)
trsf <- data.frame(predict(dmy, newdata = customers))
print(trsf)
将fullRank设置为T时,得到n-1个虚拟变量。
小结
今天给大家介绍了caret的dummyVars函数用来生成哑变量,感谢大家耐心看完。发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,用到的数据集也会在原文中给出链接,你只要按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么基础没有从零学Python和R的,加油。
(站外链接发不了,请关注后私信回复“数据链接”获取本头条号所有使用数据)
往期内容: