伙计们!
我是机器学习方法的新手,对此有疑问。我尝试使用 R 中的 Caret 包来启动此方法并使用我的数据集。
我有一个训练数据集 (Dataset1),其中包含有关我感兴趣的基因的突变信息,比如说基因 A。
在Dataset1中,我以Mut或Not-Mut<的形式获得了有关基因A突变的信息/强>。我使用 Dataset1 和 SVM 模型 来预测输出(我选择 SVM 是因为它比 LVQ 或 GBM 更准确)。 因此,在第一步中,我将数据集分为训练组和测试组,因为我在数据集中拥有作为测试集和训练集的信息。然后我用10倍进行了交叉验证。 我调整了模型并使用测试数据集(使用 ROC 曲线)评估了模型的性能。 直到这一步一切都很顺利。
我有另一个数据集。 数据集2,没有关于基因A的突变信息。 我现在想做的是使用 Dataset2 上的 Dataset1 中的调整后的 SVM 模型,看看它是否可以为我提供有关以下方面的突变信息: 数据集2中的基因A,形式为Mut/Not-Mut。我已经阅读了 Caret 软件包指南,但我无法获取它。我被困在这里,不知道该怎么办。
我不确定我是否选择了正确的方法。任何建议或帮助将不胜感激。
这是我的代码,直到我从第一个数据集调整我的模型。
从第一个数据集中选择训练和测试模型:
M_train <- Dataset1[Dataset1$Case=='train',-1] #creating train feature data frame
M_test <- Dataset1[Dataset1$Case=='test',-1] #creating test feature data frame
y=as.factor(M_train$Class) # Target variable for training
ctrl <- trainControl(method="repeatedcv", # 10fold cross validation
repeats=5, # do 5 repititions of cv
summaryFunction=twoClassSummary, # Use AUC to pick the best model
classProbs=TRUE)
#Use the expand.grid to specify the search space
#Note that the default search grid selects 3 values of each tuning parameter
grid <- expand.grid(interaction.depth = seq(1,4,by=2), #tree depths from 1 to 4
n.trees=seq(10,100,by=10), # let iterations go from 10 to 100
shrinkage=c(0.01,0.1), # Try 2 values fornlearning rate
n.minobsinnode = 20)
# Set up for parallel processing
#set.seed(1951)
registerDoParallel(4,cores=2)
#Train and Tune the SVM
svm.tune <- train(x=M_train,
y= M_train$Class,
method = "svmRadial",
tuneLength = 9, # 9 values of the cost function
preProc = c("center","scale"),
metric="ROC",
trControl=ctrl) # same as for gbm above
#Finally, assess the performance of the model using the test data set.
#Make predictions on the test data with the SVM Model
svm.pred <- predict(svm.tune,M_test)
confusionMatrix(svm.pred,M_test$Class)
svm.probs <- predict(svm.tune,M_test,type="prob") # Gen probs for ROC
svm.ROC <- roc(predictor=svm.probs$mut,
response=as.factor(M_test$Class),
levels=y))
plot(svm.ROC,main="ROC for SVM built with GA selected features")
所以,这就是我遇到的问题,如何使用 svm.tune 模型来预测 Dataset2 中 Gene A 的突变?
提前致谢,
最佳答案
现在您只需使用您构建和调整的模型并使用predict
进行预测即可:
D2.predictions <- predict(svm.tune, newdata = Dataset2)
它们的关键是确保您在该集合中拥有所有相同的预测变量,具有相同的列名称(并且在我的偏执世界中以相同的顺序)。
D2.predictions
将包含未标记数据的预测类别。
关于r - 如何使用 R 中的机器学习和 Caret 包在新数据集上测试调整后的 SVM 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45858631/