我有一个矩阵如下:
Real_Values Predicted_Values
5.5 5.67
6.9 7.01
9.8 9.2
6.5 6.1
10 9.7
1.5 1.0
7.7 7.01
我希望计算模型在预测值和实际值之间的错误率,并且理想情况下做一个图。我想知道R是否已经有一个整齐地做这个的包,所以我会避免任何for循环?
答案 0 :(得分:1)
您可以按照@ nathan-day的指示,手动计算回归误差指标,如均方根误差(RMSE)或误差平方和(SSE)。大多数实现都会自动为您执行此操作,因此您通常不需要手动执行此操作。
出于绘图的目的,我现在使用一个稍微大一些的示例,包含更多样本,因为它更好地理解(R附带的iris
数据集)。首先,我们训练线性模型来预测前3个特征中的第4个特征,这些特征已经计算了一些指标:
> model <- train(iris[,1:3], iris[,4], method = 'lm', metric = 'RMSE', trControl = trainControl(method = 'repeatedcv', number = 10, repeats = 10))
> print(model)
Linear Regression
150 samples
3 predictors
No pre-processing
Resampling: Cross-Validated (10 fold, repeated 10 times)
Summary of sample sizes: 134, 135, 135, 136, 134, 135, ...
Resampling results
RMSE Rsquared RMSE SD Rsquared SD
0.19 0.942 0.0399 0.0253
RMSE,SSE等现在也可以手工计算目标变量的预测值和实际值:
predicted <- predict(model, iris[,1:3]) # perform the prediction
actual <- iris[,4]
sqrt(mean((predicted-actual)**2)) # RMSE
sum((predicted-actual)**2) # SSE
与上述模型训练的结果略有不同,结果是利用重复的交叉验证(因此,指标列在&#34;重新取样结果&#34;那里)。
对于绘图部分:通过将预测值与实际目标变量绘图,和/或通过将误差与实际值绘图,可以轻松地显示回归误差。完美契合由这些图中的附加线表示。使用标准工具也可轻松实现这一目标:
plot(predicted~actual)
abline(0,1)
plot(predicted-actual~actual)
abline(0,0)
PS:如果你不熟悉回归/分类错误测量和强大的ML程序,我强烈建议花一些时间来阅读这些主题 - 它可能会为你节省大量的时间。我个人会推荐Max Kuhn(R的caret
包的维护者)和Kjell Johnson的Applied Predictive Modeling,因为它易于阅读且非常实用。
答案 1 :(得分:0)
如果你想计算剩余的平方和,像lm()这样的函数已经为你输出了这个信息。根据您用于建模数据的功能,访问RSS术语会有所不同。
根据您的data_frame,您可以像这样轻松编写RSS公式
datf <- as.data.frame(your_matix)
datf$difsq <- (datf$Real_Values - datf$Predicted_Values)^2
rss <- sum(datf$difsq)