Python中的线性回归模型详解
更新时间:2023-11-11什么是线性回归模型?
线性回归模型是一种常用的统计方法,用于建立自变量与因变量之间的线性关系。通常,一条直线被用于表示这种关系,以最大程度地拟合数据。这条直线称为最佳拟合直线。入门级的 Python 开发者可以使用 Scikit-learn 中的 LinearRegression
从头开始设计模型。
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
代码解释
这个例子引入了 Scikit-learn 包中的 LinearRegression
类,然后使用这个类创建了一个名为 lr 的对象。现在,开发人员可以使用 lr 对象来调用一系列方法,从而分析线性模型和数据之间的关系。
如何使用线性回归模型?
使用线性回归算法的主要目的是预测因变量在给定自变量的情况下的值。下面的示例说明了如何对 Scikit-learn 中自带的数据集 -- 波士顿房价数据集进行线性回归分析:
from sklearn.datasets import load_boston
boston_dataset = load_boston()
boston_dataset.keys()
# dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])
import pandas as pd
boston = pd.DataFrame(boston_dataset.data, columns=boston_dataset.feature_names)
boston['MEDV'] = boston_dataset.target
boston.head()
X = boston.drop('MEDV', axis = 1)
Y = boston['MEDV']
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=1)
lin_model = LinearRegression()
lin_model.fit(X_train, Y_train)
y_train_predict = lin_model.predict(X_train)
y_test_predict = lin_model.predict(X_test)
代码解释
首先,我们使用 Scikit-learn 中自带的数据集 -- 波士顿房价数据集,然后将其转换为 Pandas 数据帧。数据集中有 14 个特征变量和 1 个目标变量 -- MEDV(房价)。然后,我们将这些变量分成自变量(X)和因变量(Y)。之后,我们将数据集划分为训练集和测试集,并使用 LinearRegression
类来拟合模型。
如何评估模型?
对模型的评估是非常重要的,因为它有助于确定我们的模型是否对新数据表现良好。这个问题的一个常见解决方案是使用均方根误差(RMSE)。RMSE 表示观察值与预测值之间的差异。RMSE 值越低,表示我们的模型对新数据的预测能力越强。
import numpy as np
from sklearn.metrics import mean_squared_error
rmse_train = np.sqrt(mean_squared_error(Y_train, y_train_predict))
r2_train = lin_model.score(X_train, Y_train)
print("The model performance for training set")
print("--------------------------------------")
print('RMSE is {}'.format(rmse_train))
print('R2 score is {}'.format(r2_train))
print("\n")
# model evaluation for testing set
rmse_test = np.sqrt(mean_squared_error(Y_test, y_test_predict))
r2_test = lin_model.score(X_test, Y_test)
print("The model performance for testing set")
print("--------------------------------------")
print('RMSE is {}'.format(rmse_test))
print('R2 score is {}'.format(r2_test))
代码解释
首先,我们需要导入 Numpy 和 Scikit-learn 中的 mean_squared_error
函数。然后,我们用训练集和测试集的真实值与我们的模型预测值进行比较。最后,我们输出 RMSE 和 R2 分数,以评估模型的表现效果。