Machine Learning 简明教程
Machine Learning - Multiple Linear Regression
它基本上是多元线性回归的扩展,使用两个或多个特征来预测响应。我们可以用数学表示如下:
考虑具有 n 个观测值、 p 个特征(即自变量)和 y 个响应(即因变量)的数据集,则 p 个特征的回归线可以计算如下:
h\left ( x_{i} \right )=b_{0}b_{1}x_{i1}+b_{2}x_{i2}\cdot \cdot \cdot +b_{p}x_{ip}
在此,h\left ( x_{i} \right ) 是预测响应值,而 $b_{0},b_{1},b_{2}….b_{p}$ 是回归系数。
多元线性回归模型始终包含称为残差误差的数据误差,该误差会更改计算,如下所示 −
h\left ( x_{i} \right )=b_{0}b_{1}x_{i1}+b_{2}x_{i2}\cdot \cdot \cdot +b_{p}x_{ip}+e_{i}
我们还可以将上述方程式写成以下形式 −
y_{i}=h\left ( x_{i} \right )+e_{i}\:\: 或 \:\: e_{i}=y_{i}-h\left ( x_{i} \right )
Python Implementation
要使用 Scikit-Learn 在 Python 中实现多元线性回归,我们可以使用与简单线性回归中相同的 LinearRegression 类,但这次我们需要提供多个自变量作为输入。
考虑 Scikit-Learn 中的波士顿住房数据集,并使用它实现多元线性回归。
Example
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
import numpy as np
import matplotlib.pyplot as plt
# Load the Boston Housing dataset
boston = load_boston()
# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(boston.data,
boston.target, test_size=0.2, random_state=0)
# Create a linear regression object
lr_model = LinearRegression()
# Fit the model on the training data
lr_model.fit(X_train, y_train)
# Make predictions on the test data
y_pred = lr_model.predict(X_test)
# Calculate the mean squared error
mse = mean_squared_error(y_test, y_pred)
# Calculate the coefficient of determination
r2 = r2_score(y_test, y_pred)
print('Mean Squared Error:', mse)
print('Coefficient of Determination:', r2)
# Plot the predicted values against the actual values
plt.figure(figsize=(7.5, 3.5))
plt.scatter(y_test, y_pred)
plt.xlabel('Actual Values')
plt.ylabel('Predicted Values')
# Add a regression line to the plot
x = np.linspace(0, 50, 100)
y = x
plt.plot(x, y, color='red')
# Show the plot
plt.show()
在此代码中,我们首先使用 Scikit-Learn 的 load_boston() 函数加载波士顿住房数据集。然后,使用 train_test_split() 函数将数据集拆分为训练集和测试集。
接下来,我们创建一个 LinearRegression 对象,并使用 fit() 方法在训练数据上拟合。然后,我们使用 predict() 方法对测试数据进行预测,并分别使用 mean_squared_error() 和 r2_score() 函数计算均方误差和确定系数。
最后,我们使用 scatter() 函数将预测值与实际值绘制出来,并使用 plot() 函数向绘图中添加回归线。我们使用 xlabel() 和 ylabel() 函数给 x 轴和 y 轴加上标签,并使用 show() 函数显示绘图。
当您执行程序时,它将生成以下绘图作为输出,并在终端上打印均方误差和决定系数 −
Mean Squared Error: 33.44897999767653
Coefficient of Determination: 0.5892223849182507