使用 Python 和 Scikit-Learn 进行回归模型评估和调优

2023-04-14 00:00:00 python scikit

首先,我们需要准备数据集作为回归模型的训练和测试数据。假设我们有一个关于房价的数据集,包含房屋面积、卧室数量、所在区域等特征,以及对应的房价。我们可以使用 Pandas 库读取数据集并进行处理:

import pandas as pd
# 读取数据集
data = pd.read_csv('house_prices.csv')
# 提取特征和标签
X = data.drop('房价', axis=1)
y = data['房价']

接下来,我们需要将数据集拆分成训练集和测试集,以便我们可以对模型进行评估。我们可以使用 Scikit-Learn 库中的 train_test_split() 函数来实现:

from sklearn.model_selection import train_test_split
# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

现在,我们可以开始训练回归模型并对其进行评估。由于我们没有具体数据集,这里以 Linear Regression 模型为例:

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 创建线性回归模型并进行训练
model = LinearRegression()
model.fit(X_train, y_train)
# 使用测试集进行预测并评估模型质量
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print('均方误差: {:.2f}'.format(mse))
print('R2 分数: {:.2f}'.format(r2))

上述代码中,我们用 mean_squared_error() 函数计算了模型在测试集上的均方误差,以及 r2_score() 函数计算了模型的 R2 分数。这些指标可以帮助我们了解线性回归模型在给定数据集上的表现,从而决定是否需要对其进行优化。
接下来,我们可以使用网格搜索(Grid Search)技术对模型进行调优。网格搜索方法通过枚举多个超参数组合来确定最优的超参数组合。下面是一个使用网格搜索调优 Linear Regression 模型的示例:

from sklearn.model_selection import GridSearchCV
# 定义超参数搜索空间
param_grid = {
    'fit_intercept': [True, False],
    'normalize': [True, False],
    'copy_X': [True, False]
}
# 创建网格搜索对象并进行调优
grid_search = GridSearchCV(LinearRegression(), param_grid=param_grid, cv=5)
grid_search.fit(X_train, y_train)
# 输出最优超参数组合以及对应的 R2 分数
print(grid_search.best_params_)
print(grid_search.best_score_)

在上面的代码中,我们使用 GridSearchCV() 函数创建一个网格搜索对象,并指定要搜索的超参数空间。然后,在调用 fit() 方法时,该对象将遍历超参数空间中的所有可能组合,并评估每种组合的 R2 分数。最后,该函数将返回最优超参数组合以及对应的 R2 分数。
总之,通过以上步骤,我们可以轻松地使用 Python 和 Scikit-Learn 对回归模型进行评估和调优,以实现更好的模型性能。

相关文章