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
R语言:利用caret包中的dummyVars函数进行虚拟变量处理的更多相关文章
- R语言:recommenderlab包的总结与应用案例
R语言:recommenderlab包的总结与应用案例 1. 推荐系统:recommenderlab包整体思路 recommenderlab包提供了一个可以用评分数据和0-1数据来发展和测试推荐算 ...
- R语言︱H2o深度学习的一些R语言实践——H2o包
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言H2o包的几个应用案例 笔者寄语:受启发 ...
- 用R语言提取数据框中日期对应年份(列表转矩阵)
用R语言提取数据框中日期对应年份(列表转矩阵) 在数据处理中常会遇到要对数据框中的时间做聚类处理,如从"%m/%d/%Y"中提取年份. 对应操作为:拆分成列表——列表转矩阵——利用 ...
- R语言利用ROCR评测模型的预测能力
R语言利用ROCR评测模型的预测能力 说明 受试者工作特征曲线(ROC),这是一种常用的二元分类系统性能展示图形,在曲线上分别标注了不同切点的真正率与假正率.我们通常会基于ROC曲线计算处于曲线下方的 ...
- R语言中文分词包jiebaR
R语言中文分词包jiebaR R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据 ...
- 使用R语言的RTCGA包获取TCGA数据--转载
转载生信技能树 https://mp.weixin.qq.com/s/JB_329LCWqo5dY6MLawfEA TCGA数据源 - R包RTCGA的简单介绍 - 首先安装及加载包 - 指定任意基因 ...
- R语言 文本挖掘 tm包 使用
#清除内存空间 rm(list=ls()) #导入tm包 library(tm) library(SnowballC) #查看tm包的文档 #vignette("tm") ##1. ...
- R语言使用 multicore 包进行并行计算
R语言是单线程的,如果数据量比较大的情况下最好用并行计算来处理数据,这样会获得运行速度倍数的提升.这里介绍一个基于Unix系统的并行程序包:multicore. 我们用三种不同的方式来进行一个简单的数 ...
- 用R语言的quantreg包进行分位数回归
什么是分位数回归 分位数回归(Quantile Regression)是计量经济学的研究前沿方向之一,它利用解释变量的多个分位数(例如四分位.十分位.百分位等)来得到被解释变量的条件分布的相应的分位数 ...
随机推荐
- Kubernetes DNS 简介
环境 $ sudo lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16 ...
- Neuron:Neural activities in V1 create a bottom-up saliency map
Neural activities in V1 create a bottom-up saliency map 本文证明了人类的初级视皮层可以在视觉信息加工的非常早期阶段,生成视觉显著图,用以引导空间 ...
- JS中的函数、Bom、DOM及JS事件
本期博主给大家带来JS的函数.Bom.DOM操作,以及JS各种常用的数据类型的相关知识,同时,这也是JavaScript极其重要的部分,博主将详细介绍各种属性的用法和方法. 一.JS中的函数 [函数的 ...
- 关于MYSQL存储中文问题
最近在学习MYSQL时遇到了不能存储中文的问题,在网上找了很多类似的方法,最后都失败了(失败原因:修改完my.cnf文件后mysql server重新启动失败),濒临崩溃的时候重装了下mysql(Ub ...
- hibernate持久化框架
Hibernate是一个优秀的持久化框架 瞬时状态:保存在内存的程序数据,程序退出后,数据就消失了,称为瞬时状态 持久状态:保存在磁盘上的程序数据,程序退出后依然存在,称为程序数据的持久状态 持久化: ...
- 基于appium的移动端自动化测试,密码键盘无法识别问题
基于appium做自动化测试,APP密码键盘无法识别问题解决思路 这个问题的解决思路如下: 1.针对iOS无序键盘:首先,iOS的密码键盘是可识别的,但是,密码键盘一般是无序的.针对这个情况,思路是用 ...
- Mysql安装设置建议(参数设置)
当我们监测MySQL性能时,人们希望我们能够检视一下MySQL配置然后给出一些提高建议.许多人在事后都非常惊讶,因为我们建议他们仅仅改动几个设置,即使是这里有好几百个配置项.这篇文章的目的在于给你一份 ...
- C++ 中关于optional 使用过程中遇到的问题
头文件:#include <boost/optional.hpp> using namespace boost; optional很像一个仅能存放一个元素的容器,它实现了"未初始 ...
- 细谈UITabBarController
1.简述 UITabBarController和UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换,UITabB ...
- node.js系列:(调试工具)node-inspector调试Node.js应用
如果你在编写Node.js代码,node-inspector是必备之选,比Node.js的内置调试器好出许多.使用起来跟Chrome的javascript调试器很相似. 使用npm安装: $ npm ...