2015-08-21 93 views
0

我建立了一個隨機森林模型。預測的產出和實際產出是因素。有19個類可以預測,但其中一個類沒有出現在測試數據集中。計算精度錯誤,R

然後我要計算的模型的準確度,使用以下公式:

accuracy <- sum(ActualOutput==PredictedOutput, na.rm = TRUE)/length(PredictedOutput) 

生成此錯誤消息:

錯誤Ops.factor(ActualOutput,PredictedOutput):電平套 因素是不同

ActualOutput具有19個級別和PredictedOutput有18個等級。我該怎麼辦?

回答

1

假設我們有兩個輸出ActualOutput與相同長度的PredictedOutput但不同層次

PredictedOutput <- factor(c("a", "b", "b")) 
ActualOutput <- factor(c("a", "b", "c")) 

sum(ActualOutput == PredictedOutput) 

Error in Ops.factor(ActualOutput, PredictedOutput) : 
    level sets of factors are different 

PredictedOutput有2級水平,但ActualOutput具有3.我們希望的PredictedOutput水平設置爲那些ActualOutput

PredictedOutput <- factor(PredictedOutput, levels=levels(ActualOutput)) 

現在PredictedOutput看起來像

[1] a b b 
Levels: a b c 

而且你的公式應上班

sum(ActualOutput == PredictedOutput) 
[1] 2 

如果你有一個小的可重複的例子,我們可以提供更多的援助

+0

這樣一個很好的解釋和答案。它工作完美。非常感謝你。 – user36729

+0

非常歡迎。很高興幫助 – Whitebeard

0

如果將變量轉換爲字符而不是因子,您是否也有同樣的問題?你能建立你的模型嗎?或者你需要因子類型?

一般來說,這是一個培訓/測試數據集構建問題。有時候,當其中一個類沒有什麼意見時,你必須確保你在訓練和測試集中都有一些情況。檢查一些分層抽樣方法。

你可以提供一些有關用於隨機森林模型的軟件包和命令的更多信息嗎?

+0

我需要保持變量因素的形式。我一定會嘗試分層抽樣方法。感謝這個想法。 – user36729

+0

對於隨機森林模型,我嘗試了randomForest包。它包含有用的訓練和預測功能。 – user36729