R语言:利用caret包中的dummyVars函数进行虚拟变量处理

dummyVars函数:dummyVars creates a full set of dummy variables (i.e. less than full rank parameterization----建立一套完整的虚拟变量

先举一个简单的例子:

survey<-data.frame(service=c("very unhappy","unhappy","neutral","happy","very happy"))
survey
##        service
## 1 very unhappy
## 2      unhappy
## 3      neutral
## 4        happy
## 5   very happy

# 我们可以直接增加一列rank,用数字代表不同情感

survey<-data.frame(service=c("very unhappy","unhappy","neutral","happy","very happy"),rank=c(1,2,3,4,5))
survey
##        service rank
## 1 very unhappy    1
## 2      unhappy    2
## 3      neutral    3
## 4        happy    4
## 5   very happy    5

显然,对于单个变量进行如上处理并不困难,但是如果面对多个因子型变量都需要进行虚拟变量处理时,将会花费大量的时间。

下面用caret包中的dummyVars函数对因子变量进行哑变量处理。

library(caret)
## Loading required package: lattice
## Loading required package: ggplot2
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))
customers
##   id gender  mood outcome
## 1 10   male happy       1
## 2 20 female   sad       1
## 3 30 female happy       0
## 4 40   male   sad       0
## 5 50 female happy       0

# 利用dummyVars函数对customers数据进行哑变量处理

dmy<-dummyVars(~.,data=customers)

# 对自身变量进行预测,并转换成data.frame格式

trsf<-data.frame(predict(dmy,newdata=customers))
trsf
##   id gender.female gender.male mood.happy mood.sad outcome
## 1 10             0           1          1        0       1
## 2 20             1           0          0        1       1
## 3 30             1           0          1        0       0
## 4 40             0           1          0        1       0
## 5 50             1           0          1        0       0

从结果看,outcome并没有进行哑变量处理。

我们查看customers的数据类型

str(customers)
## ‘data.frame‘:    5 obs. of  4 variables:
##  $ id     : num  10 20 30 40 50
##  $ gender : Factor w/ 2 levels "female","male": 2 1 1 2 1
##  $ mood   : Factor w/ 2 levels "happy","sad": 1 2 1 2 1
##  $ outcome: num  1 1 0 0 0

可见,outcome的默认类型是numeric,现在这不是我们想要的。接下来将变量outcome转换成factor类型。

customers$outcome<-as.factor(customers$outcome)
str(customers)
## ‘data.frame‘:    5 obs. of  4 variables:
##  $ id     : num  10 20 30 40 50
##  $ gender : Factor w/ 2 levels "female","male": 2 1 1 2 1
##  $ mood   : Factor w/ 2 levels "happy","sad": 1 2 1 2 1
##  $ outcome: Factor w/ 2 levels "0","1": 2 2 1 1 1

customers中的变量outcome类型转换后,我们再次用dmy对该数据进行预测,并查看最终结果。

trsf<-data.frame(predict(dmy,newdata=customers))
trsf
##   id gender.female gender.male mood.happy mood.sad outcome0 outcome1
## 1 10             0           1          1        0        0        1
## 2 20             1           0          0        1        0        1
## 3 30             1           0          1        0        1        0
## 4 40             0           1          0        1        1        0
## 5 50             1           0          1        0        1        0

可见,outcome也已经进行了虚拟变量处理。

当然,也可以针对数据中的某一个变量进行虚拟变量(哑变量)处理。如我们需要对customers数据中的变量gender进行哑变量处理,可以执行以下操作:

dmy<-dummyVars(~gender,data=customers)
trfs<-data.frame(predict(dmy,newdata=customers))
trfs
##   gender.female gender.male
## 1             0           1
## 2             1           0
## 3             1           0
## 4             0           1
## 5             1           0

对于两分类的因子变量,我们在进行虚拟变量处理后可能不需要出现代表相同意思的两列(例如:gender.female和gender.male)。这时候我们可以利用dummyVars函数中的fullRank参数,将此参数设置为TRUE。

dmy<-dummyVars(~.,data=customers,fullRank=T)
trfs<-data.frame(predict(dmy,newdata=customers))
trfs
##   id gender.male mood.sad outcome.1
## 1 10           1        0         1
## 2 20           0        1         1
## 3 30           0        0         0
## 4 40           1        1         0
## 5 50           0        0         0
时间: 2024-08-06 06:25:39

R语言:利用caret包中的dummyVars函数进行虚拟变量处理的相关文章

R语言 文本挖掘 tm包 使用

#清除内存空间 rm(list=ls()) #导入tm包 library(tm) library(SnowballC) #查看tm包的文档 #vignette("tm") ##1.Data Import 导入自带的路透社的20篇xml文档 #找到/texts/crude的目录,作为DirSource的输入,读取20篇xml文档 reut21578 <- system.file("texts", "crude", package = &quo

R语言:recommenderlab包的总结与应用案例

R语言:recommenderlab包的总结与应用案例 1. 推荐系统:recommenderlab包整体思路 recommenderlab包提供了一个可以用评分数据和0-1数据来发展和测试推荐算法的框架.它提供了几种基础算法,并可利用注册机制允许用户使用自己的算法recommender包的数据类型采用S4类构造. (1)评分矩阵数据接口:使用抽象的raringMatrix为评分数据提供接口.raringMatrix采用了很多类似矩阵对象的操作,如 dim(),dimnames() ,rowCo

R语言中文分词包jiebaR

前言 本文挖掘是数据挖掘中一个非常重要的部分,有非常广阔的使用场景,比如我们可以对新闻事件进行分析,了解国家大事:也可以对微博信息进行分析,通过社交舆情看看大家的关注点.通过文本挖掘找到文章中的隐藏信息,对文章的结构进行分析,判断是不是同一个作者写文章:同时可以对邮件分析,结合bayes算法判断哪些是垃圾邮件,哪些是有用的邮件. 本文挖掘的第一步,就是要进行分词,分词将直接影响文本挖掘的效果.R语言在分词方面有很好的支持,接下来就给大家介绍一个不错的R语言中文分词包"结巴分词"(jie

R语言︱H2o深度学习的一些R语言实践——H2o包

R语言H2o包的几个应用案例 笔者寄语:受启发想了解H2o平台的一些R语言实现,网上已有一篇H2o的demo文件.笔者在这多贴一些案例,并且把自己实践的一些小例子贴出来. 关于H2o平台长啥样,可以看H2o的官网,关于深度学习长啥样,可以看一些教程,比如ParallelR博客之中的解析. 下面主要是贴几个案例,让大家看看. ------------------------------------------------------------ Matt︱R语言调用深度学习架构系列引文 R语言︱H

R语言下解决包不能安装的问题

目的:这次主要是为了安装Rcpp包, 方法:install.packages("Rcpp") 结果:出错,,于是,我从官网下载Rcpp_0.11.2.tar.gz,在终端输入 R CMD INSTALL Rcpp_0.11.2.tar.gz,提示我的R语言版本太低,需要3.0以上 改进:卸载R语言2.15版本后,重新安装 1: wget http://cran.r-project.org/src/base/R-2/R-3.1.0.tar.gz 2: tar -xzvf R-3.1.0.

R语言绘图——Graphics包

先给出一下参考说明: R绘图 http://www.cnblogs.com/holbrook/archive/2013/05/13/3075777.html R语言中颜色对照表 http://wenku.baidu.com/link?url=PnCsIjv3e_OGw2COt4AEo3_tHTisOYoHLGf9bf-jjzkfGIJhFZpEQrS6CAELUypnR82Wdj6VclURzzACwbUOszZVHoPnNt27RiM-Uv1B4z3 参考书<R语言核心技术手册> 我只是个勤

R语言常用数据挖掘包

今天发现一个很不错的博客(http://www.RDataMining.com),博主致力于研究R语言在数据挖掘方面的应用,正好近期很想系统的学习一下R语言和数据挖掘的整个流程,看了这个博客的内容,心里久久不能平静.决定从今天开始 ... 今天发现一个很不错的博客(http://www.RDataMining.com), 博主致力于研究R语言在数据挖掘方面的应用,正好近期很想系统的学习一下R语言和数据挖掘的整个流程,看了这个博客的内容,心里久久不能平静.决定从今天 开始,只要晚上能在11点之前把

用R语言的quantreg包进行分位数回归

什么是分位数回归 分位数回归(Quantile Regression)是计量经济学的研究前沿方向之一,它利用解释变量的多个分位数(例如四分位.十分位.百分位等)来得到被解释变量的条件分布的相应的分位数方程. 与传统的OLS只得到均值方程相比,分位数回归可以更详细地描述变量的统计分布.它是给定回归变量X,估计响应变量Y条件分位数的一个基本方法:它不仅可以度量回归变量在分布中心的影响,而且还可以度量在分布上尾和下尾的影响,因此较之经典的最小二乘回归具有独特的优势.众所周知,经典的最小二乘回归是针对因

R语言字符串处理包stringr

前言 用R语言处理字符串,总觉得很麻烦,即不能用向量的方法进行分割,也不能用循环遍历索引.grep()家族函数常常记不住,paste()函数默认以空格分割,各种不顺手啊!随着使用R语言的场景越来越多,字符串处理是必不可少的.给大家推荐一个由 Hadley Wickham 开发的一个灵活的字符串处理包stringr. 目录 stringr介绍 stringr安装 stringr的API介绍 整体文章:http://blog.fens.me/r-stringr/