模型评价 - 回归模型的常用评价指标

本文详细介绍了回归模型中常见的评价指标,如均方误差(MSE)、平均绝对误差(MAE)、平均绝对比例误差(MAPE)及R²(决定系数),并展示了如何使用sklearn在实际数据集上进行模型性能评估。通过实例演示了如何查看模型的MSE、MAE和R²,并计算MAPE,帮助理解模型的精确性和解释度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

回归模型的常用评价指标

样本误差:衡量模型在一个样本上的预测准确性

样本误差 = 样本预测值 - 样本实际值

最常用的评价指标:均误差方(MSE)

指标解释:所有样本的样本误差的平方的均值

指标解读:均误差方越接近0,模型越准确

较为好解释的评价指标:平均绝对误差(MAE)

指标解释:所有样本的样本误差的绝对值的均值

指标解读:平均绝对误差的单位与因变量单位一致,越接近0,模型越准确

平均绝对误差的衍生指标:平均绝对比例误差(MAPE)

指标解释:所有样本的样本误差的绝对值占实际值的比值

指标解读:指标越接近0,模型越准确

模型解释度:R squared R方

指标解释:应变量的方差能被自变量解释的程度

指标解读:指标越接近1,则代表自变量对于应变量的解释度越高

使用sklearn查看回归模型的各项指标

用到的数据集:https://download.csdn.net/download/d1240673769/20910882

数据集基本情况查看

# 使用sklearn查看回归模型的各项指标
import pandas as pd
import matplotlib.pyplot as plt

# 样例数据读取
df = pd.read_excel('realestate_sample_preprocessed.xlsx')

# 根据共线性矩阵,保留与房价相关性最高的日间人口,将夜间人口和20-39岁夜间人口进行比例处理
def age_percent(row):
    if row['nightpop'] == 0:
        return 0
    else:
        return row['night20-39']/row['nightpop']
df['per_a20_39'] = df.apply(age_percent,axis=1)
df = df.drop(columns=['nightpop','night20-39'])

# 数据集基本情况查看
print(df.shape)
print(df.dtypes)
print(df.isnull().sum())

在这里插入图片描述

划分数据集

# 划分数据集
x = df[['complete_year','area', 'daypop', 'sub_kde',
       'bus_kde', 'kind_kde','per_a20_39']]

y = df['average_price']
print(x.shape)
print(y.shape)

在这里插入图片描述

建立回归模型

# 建立回归模型
# 使用pipeline整合数据标准化、主成分分析与模型
import numpy as np
from sklearn.linear_model import LinearRegression, LassoCV
from sklearn.model_selection import KFold
from sklearn.preprocessing import StandardScaler, PowerTransformer
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline

# 构建模型工作流
pipe_lm = Pipeline([
        ('sc',StandardScaler()),
        ('power_trans',PowerTransformer()),
        ('polynom_trans',PolynomialFeatures(degree=3)),
        ('lasso_regr', LassoCV(alphas=(
                list(np.arange(8, 10) * 10)
            ),
    cv=KFold(n_splits=3, shuffle=True),
    n_jobs=-1))
        ])
print(pipe_lm)

在这里插入图片描述

查看模型表现

# 查看模型表现
import warnings
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
warnings.filterwarnings('ignore')

pipe_lm.fit(x,y)
y_predict = pipe_lm.predict(x)
print(f'mean squared error is: {mean_squared_error(y,y_predict)}')
print(f'mean absolute error is: {mean_absolute_error(y,y_predict)}')
print(f'R Squared is: {r2_score(y,y_predict)}')

# 计算mape
check = df[['average_price']]
check['y_predict'] = pipe_lm.predict(x)
check['abs_err'] = abs(check['y_predict']-check['average_price'] )
check['ape'] = check['abs_err']/check['average_price']
ape = check['ape'].mean()
print(f'mean absolute percent error is: {ape}')

在这里插入图片描述

### 机器学习回归模型常用评价指标 #### MSE (Mean Squared Error) 均方误差通过计算每个实际值和预测值之间差异的平方平均数来量化模型性能。这一量方法强调较大的误差,因为这些误差会被平方放大。因此,在优化过程中,减少较大偏差的影响变得尤为重要。 ```python from sklearn.metrics import mean_squared_error mse_value = mean_squared_error(y_test, y_pred) print(f"MSE: {mse_value}") ``` 对于一个好的回归模型而言,MSE应当尽可能低[^1]。 #### MAE (Mean Absolute Error) 平均绝对误差表示的是真实值与预测值之差的绝对值的期望值。相比起MSE,MAE不会过分惩罚那些具有大偏离程的数据点,这使得它更易于理解,并且更能反映实际情况中的预期误差大小。 ```python from sklearn.metrics import mean_absolute_error mae_value = mean_absolute_error(y_test, y_pred) print(f"MAE: {mae_value}") ``` 此量标准同样追求最小化,即越小越好[^3]。 #### R² Score (Coefficient of Determination) 决定系数用于描述由自变量解释的比例占总变异性的百分比;理想情况下它的数值应该趋近于1,意味着几乎所有的变异性都被所建立的模型捕捉到了。值得注意的是,即使是在随机噪声上构建的模型也可能获得正值,所以当遇到负分时,则表明模型表现极差甚至不如简单的常数基线模型。 ```python from sklearn.metrics import r2_score r2_value = r2_score(y_test, y_pred) print(f"R² Score: {r2_value}") ``` 通常来说,更高的R²分数代表更好的拟合质量,不过需要注意过拟合的风险[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jepson2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值