计算R平方误差的百分比误差

我使用Scikit Learn和Python创建了一个机器学习模型。我计算了R平方误差。是否有办法将此误差转换为百分比误差?例如,如果我的真实值是100和50,预测值是90和40,我的平均百分比误差是15%,因为第一个预测的误差是10%,第二个预测的误差是20%。基于我得到的R平方值,是否有办法计算百分比误差(平均百分比误差)?


回答:

这是不可能的。R平方是通过RSS,或残差平方和计算的。你的R平方是1 – (模型中的RSS)/(仅截距模型中的RSS)。从上面的描述可以看出,R平方并不是真正的误差,而是解释的方差百分比。

我们可以使用一个示例数据集

from sklearn.linear_model import LinearRegressionfrom sklearn.datasets import load_bostonimport numpy as npX, y = load_boston(return_X_y=True)reg = LinearRegression().fit(X, y)

我们让预测和y的均值为:

ybar = reg.predict(X)ymean = y.mean()

R平方是

1 - sum((y-ybar)**2) / sum((y-ymean)**2)0.7406426641094095reg.score(X, y)0.7406426641094095

而你的百分比误差是:

np.mean(abs(y-ybar)/y)0.16417298806489977

如你所见,由于你已经对残差进行了求和,而在百分比误差中,你需要相对于观测值的误差,因此仅从R平方中直接得到平均百分比误差是不太可能的。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注