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 数据准备
首先,我们需要导入必要的库并加载数据集:
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 训练线性回归模型
接下来,我们将使用线性回归模型:
# 创建线性回归模型
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 进行回归模型选择的基础知识,并通过“房价预测”案例演示了从数据准备到模型评估的完整流程。在实际应用中,根据数据特性选择合适的模型十分重要。
下一篇将探讨分类模型的相关内容,继续深入机器学习的应用。希望本篇对于理解回归模型及其选择有所帮助!