13 回归模型

在机器学习的任务中,回归模型是一种常用的方法,用于预测数值型的输出变量。本文将通过 Scikit-Learn 框架介绍回归模型的基础知识,并通过案例演示其实现方法。我们将重点关注如何选择合适的回归模型,以及如何评估模型的性能。

1. 回归模型概述

回归模型旨在找到输入特征与输出目标之间的关系。常见的回归类型包括:

  • 线性回归(Linear Regression)
  • 岭回归(Ridge Regression)
  • Lasso 回归(Lasso Regression)
  • 弹性网回归(Elastic Net)
  • 决策树回归(Decision Tree Regressor)
  • 随机森林回归(Random Forest Regressor)
  • 梯度提升回归(Gradient Boosting Regressor)

在选择模型时,我们通常需要考虑以下几个因素:

  • 特征的数量和类型
  • 数据的分布和线性关系
  • 模型的复杂性与计算成本

2. 案例:房价预测

为了更直观地理解回归模型的应用,我们将以“房价预测”作为案例进行讲解。我们将使用波士顿房价数据集(此数据集在 Scikit-Learn 中可直接访问)。

2.1 数据准备

首先,我们需要导入必要的库并加载数据集:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

# 加载波士顿房价数据集
boston = load_boston()
X = pd.DataFrame(boston.data, columns=boston.feature_names)
y = boston.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

2.2 训练线性回归模型

接下来,我们将使用线性回归模型:

1
2
3
4
5
# 创建线性回归模型
model = LinearRegression()

# 训练模型
model.fit(X_train, y_train)

2.3 模型预测与评估

使用测试集进行预测,并评估模型的性能:

1
2
3
4
5
6
7
8
9
# 进行预测
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 来选择与输出变量相关性最高的特征:

1
2
3
4
5
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 来调优不同型号的回归模型:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 进行回归模型选择的基础知识,并通过“房价预测”案例演示了从数据准备到模型评估的完整流程。在实际应用中,根据数据特性选择合适的模型十分重要。

下一篇将探讨分类模型的相关内容,继续深入机器学习的应用。希望本篇对于理解回归模型及其选择有所帮助!

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

复习上节

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论