我想在R中使用隨機森林方法。我需要讀取一個txt文件(訓練集)。閱讀表和R中的隨機森林
dataset<- read.table(path1,header=TRUE,sep=",")
列名是數字(即1005_at),所以它們自動轉換,加上X,R(即X1005_at)。爲了解決這個問題,我做的事:
colnames(dataset)<-gsub("^[X](.*)","\\1",colnames(dataset))
現在的名稱是好的,但是當我運行隨機森林:
model.rf <- randomForest(class ~ ., data=dataset, importance=TRUE,keep.forest=T, ntree=5, do.trace=T)
我有這樣的錯誤:
Error in eval(expr, envir, enclos) : object '1005_at' not found
雖然如果我在原始數據集上運行隨機森林(不修改名稱,所以使用X1005_at),則不會發生此錯誤。爲什麼?我該如何解決它?
我不能肯定地說,但我估計它有一個事實,即'randomForest'正在評估一個公式組合列的非標名的人。我敢肯定,如果你看看代碼,'.'會翻譯成某個地方的替代語句(或等價物),這可能是'dataset'列的**名稱列表**。該函數很可能不會爲非標準名稱進行分配(不需要爲什麼它應該,因爲它具有對用戶的期望),因此錯誤 – 2013-05-14 10:46:23
爲什麼不簡單地將名稱解析爲最後一步? – 2013-05-14 10:47:37
我在列名中使用下劃線的數據框上使用aggregate()時遇到過這個問題。網絡搜索到目前爲止沒有提出任何好的解釋。但是,如果它與轉換後的名稱一起工作 - 正如裏卡多所說,爲什麼不直接使用這些名稱並在最後修復名稱? – neilfws 2013-05-14 10:51:44