机器学习一点通:如何评价和可视乎回归分析结果

在评估回归模型时,除了均方误差(MSE)均方根误差(RMSE)之外,还有几种指标可用于评估其性能。以下是一些常用的回归评估指标:

  • 平均绝对误差(MAE):该指标衡量了预测值与实际值之间的平均绝对差异。它提供了模型平均预测误差的度量。

  • R平方(R²)或决定系数:R平方表示因变量(目标变量)的方差可由自变量(特征)预测的比例。它的取值范围从0到1,其中1表示完全拟合。

  • 平均对数误差(MSLE):MSLE衡量了预测值与实际值之间的平均对数误差。当目标变量具有指数增长时,它可能会很有用。

  • 解释方差得分:该得分衡量了模型解释的方差比例。它的取值范围从0到1,其中1表示完全拟合。

  • 中位绝对误差(MedAE):与MAE类似,该指标计算了预测值与实际值之间的中位数绝对差异。相比MAE,它对异常值不太敏感。

  • 调整的R平方(Adjusted R²):调整的R平方考虑了模型中预测变量的数量。它对不必要的变量增加进行惩罚,并有助于避免过拟合。

  • 平均百分比误差(MPE):该指标计算了预测值与实际值之间的平均百分比差异。当您希望了解模型预测的相对误差时,它很有用。

  • 平均绝对百分比误差(MAPE):MAPE计算了预测值与实际值之间的平均百分比差异,类似于MPE。它通常用于时间序列预测。

  • 分位数损失:分位数损失衡量了预测目标变量特定分位数的准确性。它提供了关于模型在不同不确定性水平上的性能的信息。

回归评估的可视化技术可以包括:

  • 散点图:将预测值与实际值进行绘图,可以帮助可视化模型的整体性能。理想情况下,数据点应该接近一条对角线。

*残差图:残差是预测值与实际值之间的差异。将残差绘制为预测值或自变量的函数,可以帮助识别模式或异方差性(不等方差)。

  • 分布图:将预测值的分布与实际值进行比较,可以提供关于模型准确性以及是否捕捉到基础数据分布的洞察。

*回归线图:将回归线与数据点一起可视化,可以帮助理解自变量和因变量之间的关系。

以下代码展示了一些示例:

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score

# Generate some random data for demonstration
np.random.seed(42)
X = np.random.rand(100, 1)  # Independent variable
y = 2 + 3 * X + np.random.randn(100, 1)  # Dependent variable with some noise

# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Fit the regression model
model = LinearRegression()
model.fit(X_train, y_train)

# Make predictions on the test set
y_pred = model.predict(X_test)

# Evaluate the model using different metrics
mse = mean_squared_error(y_test, y_pred)
mae = mean_absolute_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

# Calculate adjusted R-squared
n = X_test.shape[0]  # Number of samples
p = X_test.shape[1]  # Number of predictors
adjusted_r2 = 1 - ((1 - r2) * (n - 1) / (n - p - 1))

# Scatter plot of actual vs predicted values
plt.scatter(y_test, y_pred)
plt.xlabel('Actual Values')
plt.ylabel('Predicted Values')
plt.title('Actual vs Predicted Values')
plt.show()

# Residual plot
residuals = y_test - y_pred
plt.scatter(y_pred, residuals)
plt.xlabel('Predicted Values')
plt.ylabel('Residuals')
plt.title('Residual Plot')
plt.axhline(y=0, color='r', linestyle='-')
plt.show()

print("Mean Squared Error (MSE):", mse)
print("Mean Absolute Error (MAE):", mae)
print("R-squared (R²):", r2)
print("Adjusted R-squared:", adjusted_r2)

阅读英文原文

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值