2017-03-29 47 views
0

我正在運行randomforest模型來預測黑名單。我得到一個真正的問題,我不能自己解決。 我的代碼如下。randomforest R:爲什麼打印預測不等於預測存儲

library(xlsx) 
library(randomForest) 
setwd('E:\\laolai') 
rm(list=ls()) 
accepts <- read.xlsx('fuckdata.xlsx',sheetIndex = 1) 
set.seed(10) 
ind <- sample(2,nrow(accepts),replace=TRUE,prob=c(0.5,0.5)) 
train_data <- accepts[ind==1,] 
test_data <- accepts[ind==2,] 
rf <- randomForest(formula,data=train_data,ntree=1500,na.action=na.roughfix) 
plot(rf,main='randomforest') 
print(rf) 
source_3pred <- predict(rf,test_data) 
plot(source_3pred,main='predict',xlab='trees',type='l') 

全球環境數據:

accepts 3279obs. of 27 variables 
test_data 1648 obs.of 27 variblss 
train_data 1648 obs.of 27 variblss 

值:

source_3pred Named num [1:1648] NA NA NA NA NA....... 

然後

print(source_3pred) 

得到2數據3279.such爲3218 NA,3224 0.7609778。

+0

你似乎有關於森林如何隨機工作的誤解。隨着隨機森林,不像大多數其他機器學習方法,我們沒有明確使用一組訓練數據。相反,我們在構建模型時包含_all_數據。其原因是隨機森林在構建模型時隱含地交叉驗證。 –

+0

導致我,首先,python熊貓吧,然後,R,爲它建模,一個惱人的excel。 –

+0

所以,我認爲從一開始就有錯誤的是要有單獨的測試和培訓數據,您應該只使用您的整個數據集。 –

回答

0

randomForest軟件包帶有一個名爲importance()的函數,該函數可以爲使用相同程序包構建的隨機森林模型計算兩個健壯性度量。第一種方法將每棵樹的預測精度與同一棵樹進行比較,但使用預測變量的隨機置換。另一種方法使用基尼指數/殘差平方和來測量樹中每個分裂的節點雜質的減少。

這裏是你如何訪問您的隨機森林模型的重要性的代碼示例:

rf <- randomForest(formula, data=train_data, ntree=1500, na.action=na.roughfix, 
        importance=TRUE) 
# for permutation measure of accuracy 
importance(rf, type=1) 

# for split measure of accuracy 
importance(rf, type=2)