我是R,SVM和并行处理的新手:S
我有以下代码来优化SVM:
library(e1071)
# Perform a grid search of SVM predictions of the training data set using a range of gamma and cost values
tuneResult <- tune(svm, ActualDepth ~ . , data=trainset, ranges=list(gamma=seq(0.6,0.8,0.1),cost=seq(180,190,5)))
print(tuneResult) # Print the results of the grid search to screen
plot(tuneResult) # Plot the results of the grid search to a contour plot
现在我想将此代码并行化以使用我的整个cpu。我已经尝试了以下代码的几个内涵,但它似乎不对,我不确定输出是最好的结果还是仅仅是最后的结果。我希望这是最后的结果,因为如果它是最好的结果那么它不是很好!请你帮我纠正下面的代码,这样我就可以获得最佳的伽马和成本,或者我可以获得类似上面调整函数的输出图
# Use all CPU
library(foreach)
library(doSNOW)
G = seq(0.6,0.8,0.01)
cl <- makeCluster(detectCores()-1)
registerDoSNOW(cl)
parResult <- foreach(i = 1:length(G), combine = "combine") %dopar% {
library(e1071)
svm(ActualDepth ~ ., data = trainset, gamma = G[i], cost = 1)
}
stopCluster(cl)
parPred <- predict(parResult[[1]],testset[,-1])
plot(testset[,1],parPred)
abline(0,1,col="red")
abline(-8,1,col="green")
abline(8,1,col="green")
我已经对这个问题进行了网络搜索,虽然我找到了一些资源,但它们并不是我可以直接使用的东西,而且我没有足够的R来修改它们,或者经常了解它们正在做什么。我真的很感激这个问题的一些帮助,我已经不停地工作了2天了。
非常感谢