rpart模型和测试集之间的RMLSE验证显示Na和零

时间:2015-07-27 03:25:14

标签: r r-caret

当我撞墙时,我正在寻求一点帮助。 我已经训练了一个带有火车数据集的模型(CART),并希望在测试集上使用RMLSE验证模型的准确性。 我有以下内容:

data.frame':    5463 obs. of  15 variables:
$ Start_date: chr  "2011-01-20 02:00:00" "2011-01-20 05:00:00" "2011-01-20  06:00:00"
$ Season    : Factor w/ 4 levels "spring","summer",..: 1 1 1 1 1 1 1 1 1 1
$ Holiday   : Factor w/ 2 levels "Not","Holiday": 1 1 1 1 1 1 1 1 1 1 ...
$ Workingday: int  1 1 1 1 1 1 1 1 1 1 ...
$ Weather   : Factor w/ 4 levels "Clear","Cloudy",..: 1 1 1 1 1 2 1 2 2 2..
 $ Temp      : num  10.66 9.84 9.02 9.02 9.02 ...
 $ Humidity  : int  56 60 60 55 55 52 48 45 42 45 ...
 $ Windspeed : num  0 15 15 15 19 ...
 $ Count     : num  1 1 1 8 18 6 3 4 5 3 ...
 $ Date      : chr  "2011-01-20" "2011-01-20" "2011-01-20" "2011-01-20" ...
 $ Hour      : Factor w/ 24 levels "00","01","02",..: 3 6 7 8 9 10 11 12 .
 $ Year      : chr  "2011" "2011" "2011" "2011" ...
 $ Month     : chr  "01" "01" "01" "01" ...
 $ Weekday   : Factor w/ 7 levels "Friday","Monday",..: 5 5 5 5 5 5 5 5 5 5
 $ Hour_Bin  : num  0 0 0 0 0 0 0 0 0 0 ...
 $ temp_Bin  : num  1 1 1 2 2 2 2 2 2 2 ...
 $ year_Bin  : num  1 1 1 1 1 1 1 1 1 1 ...

预测值是矢量:

    Named num [1:5463] 9 9 9 9 9 9 9 9 9 9 ...
   - attr(*, "names")= chr [1:5463] "9266" "9267" "9268" "9269" ... 

我使用过该功能:

Evaluate_Model <- function (test, pred) {
return(sqrt(1/nrow(test)*sum((log(pred+1)-log(test$Count+1))^2)))
}

并尝试了矩阵包

library('Metrics')
rmsle(test$Count, pred)

当我尝试获得均方根平方对数误差时,我返回[0]或[Na]。 我经历了将count变量转换为不同数据类型的过程,并尝试将预测放入数据帧并从其中进行评估。 我还训练了一个具有一个属性的模型,并尝试评估这些模型,但我仍然会得到相同的结果。 我的目标变量(count)和其他属性的值为零,但这些是实数值,而不是na。 它是算法的训练,数据类型??? 任何帮助将不胜感激。

模型代码示例:

model3 <- rpart(Count~Month+Temp, data = train)
# round prediction
pred <- round(predict(model3, newdata = test))
Evaluate_Model(test, pred)

提前致谢。

0 个答案:

没有答案