0
我是R編程新手,但我試圖學習並行計算和foreach的使用。Foreach循環 - {:任務1失敗 - 「找不到對象」中的錯誤
在我的情況下,我需要循環組合的可能性來找到最好的MAPE和與之相關的最佳變量。
我開始做嵌套for循環,但與180K行,並試圖找到它連續運行2天3個變量的最佳組合,它並沒有停止。
這個代碼只是2個變量,但我認爲你可以理解邏輯。
for (i in names(df3)) {
for (j in names(df3)) {
name4 = names(df3["DiasAusencia"])
if (i != name4 && j != name4 && i != j) {
df4 = df3[, c(i, j, "DiasAusencia")]
H = holdout(df4$DiasAusencia, ratio = 2/3)
Fi = fit(DiasAusencia ~ ., df4[H$tr,], model = "svm")
testDf = df4[H$ts,]
P = predict(Fi, testDf)
MAE = mmetric(testDf$DiasAusencia, P, metric = "MAE")
MAPE = mmetric(testDf$DiasAusencia, P, metric = "MAPE")
res = cbind(testDf, predicted = P, MAE, MAPE)
if (MAPE < BESTMAPE) {
BESTMAPE = MAPE
bestres = res
}
}
}
}
所以,我看着在foreach文檔,並試圖將其應用到這個問題,所以我可以運行可能所有的組合,但沒有成功爲止。這是我的foreach代碼:
svm3 = function(var1, var2){
if (var1 != name4 && var2 != name4 && var1 != var2) {
df4 = df3[, c(var1, var2, "DiasAusencia")]
H = holdout(df4$DiasAusencia, ratio = 2/3)
Fi = fit(DiasAusencia ~ ., df4[H$tr,], model = "svm")
testDf = df4[H$ts,]
P = predict(Fi, testDf)
MAE = mmetric(testDf$DiasAusencia, P, metric = "MAE")
MAPE = mmetric(testDf$DiasAusencia, P, metric = "MAPE")
res = cbind(testDf, predicted = P, MAE, MAPE)
return(MAPE)
}
}
sol = foreach(i=1:ncols, j=1:ncols, .combine = rbind, .packages="rminer")%dopar%{
var1 = names(df3[i])
var2 = names(df3[j])
name4 = names(df3["DiasAusencia"])
svm3(var1, var2)
tmp = matrix(MAPE, ncol = ncols)
return(tmp)
}
這是錯誤我得到
錯誤{:任務1失敗 - 「對象 'MAPE' 未找到」
希望你們可以幫助我解決這個問題!
預先感謝您。
Altough現在我有這個錯誤「'數據'必須是矢量類型,是'NULL'」。我知道我的MAPE是每次循環迭代並添加到「tmp」矩陣時應該生成的數字。我如何使它成爲矢量? –
你很幸運我發現了第一個錯誤 - 你現在應該學會如何製作一個可重複的例子,然後問一個能產生這個新錯誤的新問題! – Spacedman