caret包处理流程

转自:http://blog.csdn.net/wolfbloodbj/article/details/8831889
caret包可以处理至少以下事情.
1、初步筛选属性(过滤以下属性)
a、找出 属性值接近为常数的 属性  nearZeroVar
b、找出 相关系数最大的        属性  findCorrelation
c、找出 多重共线性的           属性  findLinearCombos

2、处理缺失值 
preProcess(data, method=c("bagImpute","knnImpute"));predict(pro, newdata)

3、中心化、标准化
preProcess(data, method=c("center","scale"))

4、特征选择
rfeControl, rfe

5、抽样数据划分
createDataPartition()
createFold()…

6、模型训练
trainControl():设置训练交叉验证的重数,重复几次等
train(): 设置使用何种模型训练(查看函数定义[非常之多])

7、预测结果
predict()



定义属性个数

data(mdrr)

# 0 variance

newdata <- mdrrDescr[, -nearZeroVar(mdrrDescr)]

# high cor

descrCorr <- cor(newdata)

newdata2 <- newdata[, -findCorrelation(descrCorr)]


去掉共线性(如果存在)

comboInfo <- findLinearCombos(newdata2)

if(!is.null(comboInfo)){

     newdata3 <- newdata2[, -comboInfo$remove]


如果有缺失值,使用bagImpute,knnImpute进行计算填补

if(nrow(newdata2[!complete.cases(newdata2),])=0)

{

process <- preProcess(newdata2, method="bagImpute")

pre <- predict(process, newdata2)

}


# feather selection

产生检测属性个数的序列

subsets <- seq(2, ncol(newdata2), by=2)


# define rfeControl

ctl <- rfeControl(functions=rfFuncsmethod="cv"verbose=FALSEreturnResamp="final")


# rfe: feature selection

pro <- rfe(newdata2mdrrClasssizes subsetsrfeControl=ctl)


plot(pro);

# feature selected variables

pro$optVariables


训练模型

获取特征选择后的属性

newdata4 <- newdata2[, pro$optVariables]


训练数据测试数据


index <- createDataPartition(mdrrClassp=3/4list=F)


trainx <- newdata4[index,]

trainy <- mdrrClass[index]


testx <- newdata4[-index,]

testy <- mdrrClass[-index]


设置模型训练参数并拟合模型

fitControl <- trainControl(method="repeatedcv"number=10repeats=3returnResamp="all")


gbmGrid <- expand.grid(.interaction.depth=c(1,3), .n.trees=seq(50,300,by=50), .shrinkage=0.1)


gbmFit1 <- train(trainxtrainymethod="gbm"trControl=fitControltuneGridgbmGridverbose=F)

trainControl

plot(gbmFit1)


使用训练好的模型进行predict

predict(gbmFit1newdata=testx)

混淆矩阵查看结果

table(testy, predict(gbmFit1newdata=testx))


使用另外的模型(装袋法)

gbmFit2 <- train(trainxtrainymethod="treebag"trControl=fitControl)

table(testy, predict(gbmFit2newdata=testx))


models <- list(gbmFit1gbmFit2);


predValues <- extractPrediction(modelstestX=testxtestY=testy)

# predValues <- extractPrediction(models, testX=testx)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值