统计预测与决策第三章代码重现

##统计预测与决策第三章代码重现
#神经网络模型训练
library(doParallel)
registerDoParallel(4)
nnetGrid=expand.grid(decay=c(0,0.01,0.1),
                     size=c(1,3,5,7,9,11,13),
                     bag=FALSE) #创建参数网格
set.seed(100)
nnetTune=train(x=solTrainXtrans,y=solTrainY,
               method="avNNet",
               tuneGrid=nnetGrid,
               trControl=ctrl,
               preProc=c("center","scale"),
               linout=TRUE, #输出线性模型系数
               trace=FALSE, #不输出详细训练过程
               MaxNWts=13*(ncol(solTrainXtrans)+1)+13+1,  #最大权重数量
               maxit=1000,  #最大迭代次数
               allowParallel=FALSE)  #禁用并行计算
nnetTune
plot(nnetTUne)
testResults=data.frame(obs=solTestY,
                      NNet=predict(nnetTune,solTestXtrans))

##MARS模型训练
set.seed(100)
marsTune=train(x=solTrainXtrans,y=solTrainY,
               method="earth",
               tuneGrid = expand.grid(degree=1,nprune=2:38),
               trControl = ctrl)
marsTune
##绘制不同参数的结果
plot(marsTune)
#重要性排序绘图
testResults$MARS=predict(marsTune,solTestXtrans)
marsImp=varImp(marsTune,scale=FALSE)
plot(marsImp,top=25)

##SVMR模型训练
set.seed(100)
svmRTune=train(x=solTrainXtrans,y=solTrainY,
              method="svmRadial",  # 指定使用径向基核函数的支持向量机模型
              preProc=c("center","scale"),
              tuneLength=14,   # 调参的长度,即尝试不同的参数组合数量
              trControl=ctrl)
svmRTune
# 绘制调参结果的图形,横坐标采用对数刻度
plot(svmRTune,scales = list(x=list(log=2)))

##SVMP模型训练
svmGrid=expand.grid(degree=1:2,
                    scale=c(0.01,0.005,0.001),
                    c=2~(-2,5))
set.seed(100)
svmPTune=train(x=solTrainXtrans,y=solTrainY,
               method = "svmPoly",  # 指定使用多项式核函数的支持向量机模型
               preProc=c("center","scale"),
               tuneGrid=svmGrid,
               trControl = ctrl)
svmPTune
# 绘制调参结果的图形,横坐标采用对数刻度,纵坐标采用线性刻度
plot(svmPTune,
     scales=list(x=list(log=2),
                 between=list(x=0.5,y=1)))
##模型对比
testResults$SVMr=predit(svmRTune,solTestXtrans)
testResults$SVMp=predict(svmPTune,solTestXtrans)

##knn算法
# 去除训练数据中方差接近于零的列
knnDescr=solTrainXtrans[,-nearZeroVar(solTrainXtrans)]

set.seed(100)
knnTune=train(x=knnDescr,y=solTrainY,
              method="knn",  # 指定使用KNN模型
              preProc=c("center","scale"),
              tuneGrid=data.frame(k=1:20),
              trControl=ctrl)
knnTune
plot(knnTune)
testResults$Knn=predict(knnTune,solTestXtrans[,names(knnDescr)])

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值