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

本文详细介绍了回归模型中常见的评价指标,如均方误差(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}')

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jepson2017

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

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

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

打赏作者

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

抵扣说明:

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

余额充值