伙计们!
我是机器学习方法的新手,对此有疑问。我尝试在R 中使用Caret包来启动此方法并使用我的数据集。
我有一个训练数据集 (Dataset1),其中包含有关我感兴趣的基因的突变信息,比如Gene A。
在Dataset1 中,我有关于Mut或Not-Mut形式的基因 A突变的信息。我使用Dataset1和SVM 模型来预测输出(我选择 SVM 是因为它比 LVQ 或 GBM 更准确)。因此,在我的第一步中,我将我的数据集分为训练组和测试组,因为我在数据集中有作为测试和训练集的信息。然后我用 10 折进行了交叉验证。我调整了我的模型并使用测试数据集(使用 ROC 曲线)评估了模型的性能。一切顺利,直到这一步。
我有另一个数据集。Dataset2没有关于Gene A 的突变信息。我想现在要做的就是用我的调整SVM模型从dataSet1的上Dataset2,看它是否能够给我有关的突变信息,基因A在数据集2中的一种形式MUT /不-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模型预测的突变基因A在Dataset2?
提前致谢,
现在,您只需使用您构建和调整的模型,并使用predict
以下方法对其进行预测:
D2.predictions <- predict(svm.tune, newdata = Dataset2)
他们的关键是确保你在这个集合中拥有相同的预测变量,具有相同的列名(并且在我的偏执世界中以相同的顺序)。
D2.predictions
将包含未标记数据的预测类。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句