前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R语言包_gbm

R语言包_gbm

作者头像
用户1147754
发布于 2019-05-26 04:09:35
发布于 2019-05-26 04:09:35
1.7K20
代码可运行
举报
文章被收录于专栏:YoungGyYoungGy
运行总次数:0
代码可运行

gbm效果和randomForest相近,但是占用内存更少,且支持多核crossValidation运算。

本文用到的处理二值数据的方法,有以下两种:

  1. glm(generalized boosted models)
  2. glmnet(generalized linear models)

glm使用了boosted trees,glmnet使用了regression

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# load libraries
library(caret)
library(pROC)

#################################################
# data prep
#################################################

# load data
titanicDF <- read.csv('http://math.ucdenver.edu/RTutorial/titanic.txt',sep='\t')
titanicDF$Title <- ifelse(grepl('Mr ',titanicDF$Name),'Mr',ifelse(grepl('Mrs ',titanicDF$Name),'Mrs',ifelse(grepl('Miss',titanicDF$Name),'Miss','Nothing'))) 
titanicDF$Age[is.na(titanicDF$Age)] <- median(titanicDF$Age, na.rm=T)

# miso format
titanicDF <- titanicDF[c('PClass', 'Age',    'Sex',   'Title', 'Survived')]

# dummy variables for factors/characters
titanicDF$Title <- as.factor(titanicDF$Title)
titanicDummy <- dummyVars("~.",data=titanicDF, fullRank=F)
titanicDF <- as.data.frame(predict(titanicDummy,titanicDF))
print(names(titanicDF))


# what is the proportion of your outcome variable?
prop.table(table(titanicDF$Survived))

# save the outcome for the glmnet model
tempOutcome <- titanicDF$Survived  

# generalize outcome and predictor variables
outcomeName <- 'Survived'
predictorsNames <- names(titanicDF)[names(titanicDF) != outcomeName]

#################################################
# model it
#################################################
# get names of all caret supported models 
names(getModelInfo())

titanicDF$Survived <- ifelse(titanicDF$Survived==1,'yes','nope')

# pick model gbm and find out what type of model it is
getModelInfo()$gbm$type

# split data into training and testing chunks
set.seed(1234)
splitIndex <- createDataPartition(titanicDF[,outcomeName], p = .75, list = FALSE, times = 1)
trainDF <- titanicDF[ splitIndex,]
testDF  <- titanicDF[-splitIndex,]

# create caret trainControl object to control the number of cross-validations performed
objControl <- trainControl(method='cv', number=3, returnResamp='none', summaryFunction = twoClassSummary, classProbs = TRUE)


# run model
objModel <- train(trainDF[,predictorsNames], as.factor(trainDF[,outcomeName]), 
                  method='gbm', 
                  trControl=objControl,  
                  metric = "ROC",
                  preProc = c("center", "scale"))
)

# find out variable importance
summary(objModel)

# find out model details
objModel

#################################################
# evalute mdoel
#################################################
# get predictions on your testing data

# class prediction
predictions <- predict(object=objModel, testDF[,predictorsNames], type='raw')
head(predictions)
postResample(pred=predictions, obs=as.factor(testDF[,outcomeName]))

# probabilites 
predictions <- predict(object=objModel, testDF[,predictorsNames], type='prob')
head(predictions)
postResample(pred=predictions, obs=testDF[,outcomeName])

auc <- roc(ifelse(testDF[,outcomeName]=="yes",1,0), predictions[[2]])
print(auc$auc)


################################################
# glm model
################################################

# pick model gbm and find out what type of model it is
getModelInfo()$glmnet$type

# save the outcome for the glmnet model
titanicDF$Survived  <- tempOutcome

# split data into training and testing chunks
set.seed(1234)
splitIndex <- createDataPartition(titanicDF[,outcomeName], p = .75, list = FALSE, times = 1)
trainDF <- titanicDF[ splitIndex,]
testDF  <- titanicDF[-splitIndex,]

# create caret trainControl object to control the number of cross-validations performed
objControl <- trainControl(method='cv', number=3, returnResamp='none')

# run model
objModel <- train(trainDF[,predictorsNames], trainDF[,outcomeName], method='glmnet',  metric = "RMSE")

# get predictions on your testing data
predictions <- predict(object=objModel, testDF[,predictorsNames])

library(pROC)
auc <- roc(testDF[,outcomeName], predictions)
print(auc$auc)

postResample(pred=predictions, obs=testDF[,outcomeName])

# find out variable importance
summary(objModel)
plot(varImp(objModel,scale=F))

# find out model details
objModel

# display variable importance on a +/- scale 
vimp <- varImp(objModel, scale=F)
results <- data.frame(row.names(vimp$importance),vimp$importance$Overall)
results$VariableName <- rownames(vimp)
colnames(results) <- c('VariableName','Weight')
results <- results[order(results$Weight),]
results <- results[(results$Weight != 0),]

par(mar=c(5,15,4,2)) # increase y-axis margin. 
xx <- barplot(results$Weight, width = 0.85, 
              main = paste("Variable Importance -",outcomeName), horiz = T, 
              xlab = "< (-) importance >  < neutral >  < importance (+) >", axes = FALSE, 
              col = ifelse((results$Weight > 0), 'blue', 'red')) 
axis(2, at=xx, labels=results$VariableName, tick=FALSE, las=2, line=-0.3, cex.axis=0.6)  


################################################
# advanced stuff
################################################

# boosted tree model (gbm) adjust learning rate and and trees
gbmGrid <-  expand.grid(interaction.depth =  c(1, 5, 9),
                        n.trees = 50,
                        shrinkage = 0.01)

# run model
objModel <- train(trainDF[,predictorsNames], trainDF[,outcomeName], method='gbm', trControl=objControl, tuneGrid = gbmGrid, verbose=F)

# get predictions on your testing data
predictions <- predict(object=objModel, testDF[,predictorsNames])

library(pROC)
auc <- roc(testDF[,outcomeName], predictions)
print(auc$auc)

参考资料

DataExploration博客

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015年09月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
2 条评论
热度
最新
请问有没有计费案例可以看?
请问有没有计费案例可以看?
11点赞举报
您好,您可以参考计费篇中的计费示例:https://cloud.tencent.com/developer/article/1876758
您好,您可以参考计费篇中的计费示例:https://cloud.tencent.com/developer/article/1876758
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
实时音视频 TRTC 常见问题汇总---咨询问题篇
支持的平台包括 iOS、Android、Windows(C++)、Windows(C#)、Mac、Web、Electron、微信小程序、Flutter,更多详情请参见 平台支持。
腾讯视频云-Zachary
2019/11/01
13.3K0
实时音视频 TRTC 常见问题汇总---咨询问题篇
实时音视频 TRTC 常见问题汇总---集成接入篇
TRTC 的日志默认压缩加密,后缀为 .xlog。日志是否加密是可以通过 setLogCompressEnabled 来控制,生成的文件名里面含 C(compressed) 的就是加密压缩的,含 R(raw) 的就是明文的。
腾讯视频云-Zachary
2019/11/01
14.5K1
实时音视频 TRTC 常见问题汇总---集成接入篇
新知 | RT-ONE™&TRTC赋能实时音视频场景创新
今年腾讯云音视频发布了“三合一”的RT-ONE™网络。该网络整合了腾讯云实时通信网络(TRTC)、即时通信网络(IM)以及流媒体分发网络(CDN)三张网络,为业界最完整的音视频通信PaaS平台构建基座,面向教育、零售、泛娱乐等行业需求提供服务。本次新知系列的第一堂课,我们邀请到了腾讯云音视频的技术导师 —— 刘连响,为大家详解RT-ONE™并分享RT-ONE™&TRTC赋能实时音视频场景的一些创新。 接下来的5周,每周四晚上7:30,我们都会在腾讯云音视频视频号、开源中国、InfoQ、51CTO、云
腾讯云音视频
2021/11/22
2.2K6
实时音视频-腾讯云实时音视频(TRTC)
腾讯实时音视频(Tencent Real-Time Communication,TRTC)拥有QQ十几年来在音视频技术上的积累,致力于帮助企业快速搭建低成本、高品质音视频通讯能力的完整解决方案。
用户3570397
2019/08/06
10.7K0
你问我答 | 实时音视频TRTC(2021年5月-7月)
实时音视频TRTC 你问我答 第1季 本期共解答10个问题 Q1:移动端(Andriod/iOS)支持哪几种系统音量模式? 支持2种系统音量类型,即通话音量类型和媒体音量类型: 通话音量,手机专门为通话场景设计的音量类型,使用手机自带的回声抵消功能,音质相比媒体音量类型较差, 无法通过音量按键将音量调成零,但是支持蓝牙耳机上的麦克风。 媒体音量,手机专门为音乐场景设计的音量类型,音质相比于通话音量类型要好,通过通过音量按键可以将音量调成零。使用媒体音量类型时,如果要开启回声抵消(AEC
腾讯云音视频
2021/08/30
1.3K0
实时音视频 TRTC 常见问题汇总---小程序篇
如有更多需求,或希望深度合作,可以 提交工单 或致电4009100100联系我们。
腾讯视频云-Zachary
2021/09/21
5.8K0
实时音视频 TRTC 常见问题汇总---小程序篇
TRTC Android端开发接入学习之常见问题(十一)
V1和V2主要区别在于IM的SDK是否内嵌于TRTC中,V1线路是内嵌,而V2则可选,默认不打包IM的SDK包。V2在通话质量、线路规格、接入难度以及功能扩展上均比V1更有优势。
腾讯云-hongyang
2020/09/27
3.2K0
实时音视频开发学习10 - 小程序端一
小程序端双人通话、多人会议和语音聊天室三个功能。双人通话中实现1V1视频通话,在结合Web IM SDK可实现在线问诊或客服;语音聊天室能支持多人互动语音聊天,混音、混响等声音特效,适用于狼人杀、在线语音直播等社交场景;多人会议支持多路音视频通话、大小画面和屏幕分享等功能,适用于远程培训、在线教育等。
金林学音视频
2020/08/27
1.4K0
实时音视频开发学习10 - 小程序端一
使用TRTC Web SDK实现实时音视频通话
在使用 TRTC Web SDK 中,经常需要使用到两个对象,Client 客户端对象,Stream 流对象:
yuliang
2021/03/03
3.7K0
实时音视频开发学习1 - 音视频初体验
随着移动互联网速度越来越快的发展,实时音视频的发展也越来越收到重视。腾讯实时音视频(Tencent Real-Time Communication,TRTC)经过了10多年在网络音视频技术的发展与积累,并以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,使得开发者能快速实现低成本、低延时、高品质的音频互动解决方案。
金林学音视频
2020/08/20
4.1K0
实时音视频开发学习1 - 音视频初体验
实时音视频(TRTC)常见问题
一般而言,媒体音量指播放音乐、视频的声音、游戏声音等的音量,而通话音量指打电话的音量,视频通话的音量。
腾讯云-yyuanchen
2019/09/27
13.7K1
实时音视频 TRTC 常见问题汇总---WebRTC篇
TRTC Web SDK 对浏览器的详细支持度,您可以查看 TRTC Web SDK 对浏览器支持情况。
腾讯视频云-Zachary
2019/11/15
23.2K3
实时音视频 TRTC 常见问题汇总---WebRTC篇
实时音视频 TRTC 常见问题汇总---质量篇
如下代码所示,播放远端观众的画面渲染模式选择 TRTC_VIDEO_RENDER_MODE_FIT模式, 当渲染控件 View 的宽高比与视频宽高此不一致时,有黑边情况。
腾讯视频云-Zachary
2021/10/10
4.1K0
实时音视频 TRTC 常见问题汇总——计费案例
TRTC 是腾讯云基于 QQ 十多年来在音视频通话技术上积累,结合腾讯浏览服务 TBS WebRTC 能力与腾讯实时音视频 SDK ,为客户提供多平台互通高品质可定制化的 实时音视频互通服务 解决方案。
TRTC小百科
2021/09/27
1.5K0
iOS音视频接入 - TRTC常见问题
在 TRTC SDK 的示例代码中提供了一个叫做GenerateTestUserSig的开源模块,您只需要将其中的 SDKAPPID、EXPIRETIME 和 SECRETKEY 三个成员变量修改成您自己的配置,就可以调用genTestUserSig()函数获取计算好的 UserSig。
小明同学接音视频
2020/10/21
3K0
iOS音视频接入 - TRTC常见问题
实时音视频开发学习14 - 常见问题
V1和V2主要区别在于IM的SDK是否内嵌于TRTC中,V1线路是内嵌,而V2则可选,默认不打包IM的SDK包。V2在通话质量、线路规格、接入难度以及功能扩展上均比V1更有优势。
金林学音视频
2020/08/30
2.8K0
实时音视频开发学习14 - 常见问题
入门腾讯实时音视频(TRTC)从这里开始
腾讯实时音视频(Tencent Real-Time Communication,TRTC)将腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。产品详情 >>
smiling
2020/03/30
8.9K2
入门腾讯实时音视频(TRTC)从这里开始
实时音视频V2版本,如何进行纯音频旁路直播
实时音视频TRTCSDK适用的业务场景是视频会议、坐席通话、在线教育等,也可以实现类似微信的语音通话、语音会议功能,
腾讯云-chaoli
2019/03/13
3.5K0
实时音视频V2版本,如何进行纯音频旁路直播
实时音视频技术的演进与应用
本次分享我们邀请到了来自腾讯云实时音视频TRTC后台的研发负责人薛笛,他向我们分享了腾讯云TRTC在架构升级和产品实践中的经验。仔细讲解了混音引擎最初的制造源、在整个优化过程中发现的问题以及解决方法,为后来做腾讯会议和云呼叫中心打下了一个良好的基础。
LiveVideoStack
2021/05/08
1.7K0
实时音视频技术的演进与应用
iOS 音视频接入 - 初识TRTC
在上一篇文章中我们对音视频有了最基础的认识,下面就来了解下第三方提供的功能强大的实时音视频SDK-TRTC。
小明同学接音视频
2020/10/09
3K0
iOS 音视频接入 - 初识TRTC
推荐阅读
相关推荐
实时音视频 TRTC 常见问题汇总---咨询问题篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验