13 回归模型
系列进度
Scikit-learn 入门 · 第 13 / 24 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
回归模型输出连续数值。学习时先用线性回归做基线,再看误差是否满足业务要求,最后再考虑随机森林、梯度提升等更复杂模型。
房价示例可使用 fetch_california_housing 作为当前接口。
我会把回归误差翻译成业务语言。均方误差本身不好理解,换成价格、时间或数量的偏差,判断会更直观。
在机器学习的任务中,回归模型是一种常用的方法,用于预测数值型的输出变量。本文将通过 Scikit-Learn 框架介绍回归模型的基础知识,并通过案例演示其实现方法。我们将重点关注如何选择合适的回归模型,以及如何评估模型的性能。
1. 回归模型概述
回归模型旨在找到输入特征与输出目标之间的关系。常见的回归类型包括:
使用 Scikit-Learn 回归模型时,先看目标变量、特征处理、训练验证拆分、误差指标和残差分布。
- 线性回归(Linear Regression)
- 岭回归(Ridge Regression)
- Lasso 回归(Lasso Regression)
- 弹性网回归(Elastic Net)
- 决策树回归(Decision Tree Regressor)
- 随机森林回归(Random Forest Regressor)
- 梯度提升回归(Gradient Boosting Regressor)
在选择模型时,我们通常需要考虑以下几个因素:
- 特征的数量和类型
- 数据的分布和线性关系
- 模型的复杂性与计算成本
2. 案例:房价预测
为了更直观地理解回归模型的应用,我们将以“房价预测”作为案例进行讲解。我们将使用加州房价数据集,这个示例可以通过 Scikit-Learn 的 fetch_california_housing 获取。
开始读《回归模型》前,可以先看图中从问题到结果的路径。读完后再对照正文,确认自己能不能照着复现。
2.1 数据准备
首先,我们需要导入必要的库并加载数据集:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 加载加州房价数据集
housing = fetch_california_housing()
X = pd.DataFrame(housing.data, columns=housing.feature_names)
y = housing.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
2.2 训练线性回归模型
接下来,我们将使用线性回归模型:
# 创建线性回归模型
model = LinearRegression()
# 训练模型
model.fit(X_train, y_train)
2.3 模型预测与评估
使用测试集进行预测,并评估模型的性能:
# 进行预测
y_pred = model.predict(X_test)
# 计算均方误差和 R^2 分数
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"均方误差: {mse:.2f}")
print(f"R^2 分数: {r2:.2f}")
3. 选择合适的回归模型
在上述案例中,我们使用了线性回归模型。接下来,我们探讨如何选择更合适的回归模型。
3.1 特征选择
不同的特征组合会影响模型的表现。我们可以使用 SelectKBest 来选择与输出变量相关性最高的特征:
from sklearn.feature_selection import SelectKBest, f_regression
# 选择与目标变量相关性最高的5个特征
selector = SelectKBest(score_func=f_regression, k=5)
X_new = selector.fit_transform(X_train, y_train)
3.2 尝试不同的回归模型
我们可以使用 GridSearchCV 来调优不同型号的回归模型:
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import GridSearchCV
# 定义参数网格
param_grid = {
'n_estimators': [50, 100],
'max_depth': [None, 10, 20]
}
# 创建模型
rf = RandomForestRegressor()
# 创建网格搜索对象
grid_search = GridSearchCV(rf, param_grid, cv=5)
grid_search.fit(X_train, y_train)
# 获取最佳模型
best_rf = grid_search.best_estimator_
复习《回归模型》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。
练习《回归模型》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。
4. 小结
在本文中,我们介绍了使用 Scikit-Learn 进行回归模型选择的基础知识,并通过“房价预测”案例演示了从数据准备到模型评估的完整流程。在实际应用中,根据数据特性选择合适的模型十分重要。
下一篇将探讨分类模型的相关内容,继续深入机器学习的应用。希望本篇对于理解回归模型及其选择有所帮助!
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
回归模型适合谁读?
这是 Scikit-learn 入门 系列第 13 / 24 篇,适合正在学习Scikit-learn 入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇Scikit-learn 入门教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读