[英]Dynamic response variable for random forest
我正在嘗試創建一個動態 ML 應用程序,該應用程序允許用戶使用隨機森林 model 上傳數據集以獲取數據集中第一列的預測。
我在使用randomforest()
function 時遇到問題,特別是當我嘗試將響應變量指定為數據集的第一列時。 對於下面的示例,我使用iris 數據集並將響應變量Species移動到第一列中。
這是我的嘗試:
model <- randomForest(names(DATA[1]) ~ ., data = DATA, ntree = 500, mtry = 3, importance = TRUE)
但是,這不起作用。 我得到的錯誤是:
錯誤:可變長度不同(為“物種”找到)
該應用程序和 function 似乎僅在我像這樣手動指定響應變量時才起作用:
model <- randomForest(Species ~ ., data = DATA, ntree = 500, mtry = 3, importance = TRUE)
我曾嘗試使用paste()
function 來發揮一些作用,但我沒有成功。
我應該如何編寫代碼才能使其正常工作?
看起來您想從字符串構建公式。 您可以使用eval
和parse
來做到這一點。 像這樣的東西應該工作:
model <- randomForest(eval(parse(text = paste(names(DATA)[1], "~ ."))),
data = DATA, ntree = 500, mtry = 3, importance = TRUE)
使用原始 iris 數據集的示例:
model <- randomForest(eval(parse(text = paste(names(iris)[5], "~ ."))),
data = iris, ntree = 500, mtry = 3, importance = TRUE)
model
Call:
randomForest(formula = eval(parse(text = paste(names(iris)[5], "~ ."))), data = iris,
ntree = 500, mtry = 3, importance = TRUE)
Type of random forest: classification
Number of trees: 500
No. of variables tried at each split: 3
OOB estimate of error rate: 4%
Confusion matrix:
setosa versicolor virginica class.error
setosa 50 0 0 0.00
versicolor 0 47 3 0.06
virginica 0 3 47 0.06
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.