簡體   English   中英

隨機森林的動態響應變量

[英]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 來發揮一些作用,但我沒有成功。

我應該如何編寫代碼才能使其正常工作?

看起來您想從字符串構建公式。 您可以使用evalparse來做到這一點。 像這樣的東西應該工作:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM