我有一个矩阵如下:
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 循环?
最佳答案
您可以手动计算回归误差指标,如均方根误差 (RMSE) 或误差平方和 (SSE),如 @nathan-day 所指出的。大多数实现都会自动为您执行此操作,因此您通常不需要手动执行此操作。
出于绘图的目的,我现在将使用一个稍大一些的示例,其中包含更多样本,因为这样会更好地理解(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
与上述模型训练结果的细微差异是由于使用重复交叉验证而导致的(因此指标列在“重采样结果”下)。
对于绘图部分:通过根据实际目标变量绘制预测值和/或根据实际值绘制误差,可以轻松可视化回归误差。完美拟合由这些图中的附加线表示。这也可以使用标准工具轻松实现:
plot(predicted~actual)
abline(0,1)
plot(predicted-actual~actual)
abline(0,0)
PS:如果您不熟悉回归/分类误差测量和强大的机器学习程序,我强烈建议您花一些时间阅读这些主题 - 这可能会为您节省很多时间。我个人会推荐Applied Predictive Modeling由 Max Kuhn(R 中 caret
包的维护者)和 Kjell Johnson 编写,因为它易于阅读且非常实用。
关于r - 计算两列之间的错误率 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37237671/