我想使用来自插入符号模型的折叠预测来训练包含一些原始预测变量的第二阶段模型.我可以收集如下的折叠预测:
#Load Data
set.seed(1)
library(caret)
library(mlbench)
data(BostonHousing)
#Build Model (see ?train)
rpartFit <- train(medv ~ . + rm:lstat, data = BostonHousing, method="rpart",
trControl=trainControl(method='cv', number=folds,
savePredictions=TRUE))
#Collect out-of-fold predictions
out_of_fold <- rpartFit$pred
bestCP <- rpartFit$bestTune[,'.cp']
out_of_fold <- out_of_fold[out_of_fold$.cp==bestCP,]
Run Code Online (Sandbox Code Playgroud)
这很好,但它们的顺序错误:
> all.equal(out_of_fold$obs, BostonHousing$medv)
[1] "Mean relative difference: 0.4521906"
Run Code Online (Sandbox Code Playgroud)
我知道该train对象返回一个列表,其中列出了用于训练每个折叠的索引:
> str(rpartFit$control$index)
List of 10
$ Fold01: int [1:457] 1 2 3 4 5 6 7 8 9 10 ...
$ Fold02: int [1:454] 2 3 4 8 10 11 12 …Run Code Online (Sandbox Code Playgroud) 在R插入库中,如果我得到如下的混淆矩阵,是否有办法检索整体精度0.992?我无法获得这个单值,因为我需要存储这个值并将其用于以后的处理.这有可能吗?
Prediction A B C D E
A 1114 2 0 0 0
B 9 745 5 0 0
C 0 6 674 4 0
D 0 0 3 640 0
E 0 0 2 1 718
Run Code Online (Sandbox Code Playgroud)
总体统计
Accuracy : 0.992
95% CI : (0.989, 0.994)
No Information Rate : 0.286
P-Value [Acc > NIR] : <2e-16
Kappa : 0.99
Run Code Online (Sandbox Code Playgroud)
Mcnemar的测试P值:NA
按班级统计:
Class: A Class: B Class: C Class: D Class: E
Sensitivity 0.992 0.989 0.985 0.992 1.000
Specificity 0.999 …Run Code Online (Sandbox Code Playgroud) 在64位Linux机器上使用R 3.2.0 with caret 6.0-41和randomForest 4.6-10.
当尝试使用公式对使用包中的函数训练predict()的randomForest对象使用该方法时,该函数返回错误.当通过训练和/或使用和而不是公式,这一切都顺利进行.train()caretrandomForest()x=y=
这是一个工作示例:
library(randomForest)
library(caret)
data(imports85)
imp85 <- imports85[, c("stroke", "price", "fuelType", "numOfDoors")]
imp85 <- imp85[complete.cases(imp85), ]
imp85[] <- lapply(imp85, function(x) if (is.factor(x)) x[,drop=TRUE] else x) ## Drop empty levels for factors.
modRf1 <- randomForest(numOfDoors~., data=imp85)
caretRf <- train( numOfDoors~., data=imp85, method = "rf" )
modRf2 <- caretRf$finalModel
modRf3 <- randomForest(x=imp85[,c("stroke", "price", "fuelType")], y=imp85[, "numOfDoors"])
caretRf <- train(x=imp85[,c("stroke", "price", "fuelType")], y=imp85[, "numOfDoors"], method = "rf")
modRf4 …Run Code Online (Sandbox Code Playgroud) 我rfe对caret库中的功能有疑问.在插入符号主页链接上,他们提供以下RFE算法:
算法
对于这个例子,我使用rfe具有3倍交叉验证的功能和具有线性SVM和5倍交叉验证的列车功能.
library(kernlab)
library(caret)
data(iris)
# parameters for the tune function, used for fitting the svm
trControl <- trainControl(method = "cv", number = 5)
# parameters for the RFE function
rfeControl <- rfeControl(functions = caretFuncs, method = "cv",
number= 4, verbose = FALSE )
rf1 <- rfe(as.matrix(iris[,1:4]), as.factor(iris[,5]) ,sizes = c( 2,3) ,
rfeControl = rfeControl, trControl = trControl, method = "svmLinear")
Run Code Online (Sandbox Code Playgroud)
rfe 将数据(150个样本)分成3倍train功能将在训练集(100个样本)上运行,具有5倍交叉验证以调整模型参数 - …我正在使用R GBM软件包来增强对尺寸为10,000 X 932的一些生物数据进行回归,我想知道什么是GBM软件包的最佳参数设置(n.trees,shrinkage,interaction.depth和n. minobsinnode)当我在网上搜索时,我发现R上的CARET包可以找到这样的参数设置.但是,我在使用带有GBM包的Caret包时遇到了困难,所以我只想知道如何使用插入符找到前面提到的参数的最佳组合?我知道这似乎是一个非常典型的问题,但是我读了插入手册并且仍然难以将插入符号与gbm集成,特别是因为我对这两个包都很新
我们是否可以通过利用foreach包,nnet和插入包来使用多核并行训练神经网络模型?
我只是并行看到randomforest实现.神经网络是否可行.
我对插入符号的列车功能特别感兴趣,它可以对网格搜索最佳隐藏层和衰减大小.这需要很长时间才能在单核上运行.
任何帮助表示赞赏.
我使用了caret包的train函数和10倍交叉验证.我还设置了某个类的概率预测类classProbs = TRUE中trControl,如下所示:
myTrainingControl <- trainControl(method = "cv",
number = 10,
savePredictions = TRUE,
classProbs = TRUE,
verboseIter = TRUE)
randomForestFit = train(x = input[3:154],
y = as.factor(input$Target),
method = "rf",
trControl = myTrainingControl,
preProcess = c("center","scale"),
ntree = 50)
Run Code Online (Sandbox Code Playgroud)
我得到的输出预测如下.
pred obs 0 1 rowIndex mtry Resample
1 0 1 0.52 0.48 28 12 Fold01
2 0 0 0.58 0.42 43 12 Fold01
3 0 1 0.58 0.42 51 12 Fold01 …Run Code Online (Sandbox Code Playgroud) 首先我要说的是,我已经阅读了很多关于交叉验证的帖子,似乎有很多混乱.我的理解就是这样:
我正在尝试使用rpartR 构建一个决策树并利用该caret包.以下是我正在使用的代码.
# load libraries
library(caret)
library(rpart)
# define training control
train_control<- trainControl(method="cv", number=10)
# train the model
model<- train(resp~., data=mydat, trControl=train_control, method="rpart")
# make predictions
predictions<- predict(model,mydat)
# append predictions
mydat<- cbind(mydat,predictions)
# summarize results
confusionMatrix<- confusionMatrix(mydat$predictions,mydat$resp)
Run Code Online (Sandbox Code Playgroud)
我有一个关于插入火车应用的问题.我已经阅读了插入符号列表部分的简短介绍,其中说明了在重新采样过程中确定了"最佳参数集".
在我的例子中,我是否正确编码了?我是否需要rpart在代码中定义参数或我的代码是否足够?
有没有办法在使用列车功能将模型拟合到大的不平衡数据集时执行分层交叉验证?我知道可以直接进行k折交叉验证,但我的类别非常不平衡.我已经看过关于这个主题的讨论,但没有真正明确的答案.
提前致谢.
我想知道是否有一种方法可以根据caret包装生成的SVM-RFE模型的交叉验证数据绘制平均ROC曲线.
我的结果是:
Recursive feature selection
Outer resampling method: Cross-Validated (10 fold, repeated 5 times)
Resampling performance over subset size:
Variables ROC Sens Spec Accuracy Kappa ROCSD SensSD SpecSD AccuracySD KappaSD Selected
1 0.6911 0.0000 1.0000 0.5900 0.0000 0.2186 0.0000 0.0000 0.0303 0.0000
2 0.7600 0.3700 0.8067 0.6280 0.1807 0.1883 0.3182 0.2139 0.1464 0.3295
3 0.7267 0.4233 0.8667 0.6873 0.3012 0.2020 0.3216 0.1905 0.1516 0.3447
4 0.6989 0.3867 0.8600 0.6680 0.2551 0.2130 0.3184 0.1793 0.1458 0.3336
5 0.7000 0.3367 …Run Code Online (Sandbox Code Playgroud)