Machine Learning 简明教程
Machine Learning - Simple Linear Regression
简单线性回归是一种回归分析,其中使用单个自变量(也称为预测变量)来预测因变量。换句话说,它对因变量和单个自变量之间的线性关系进行建模。
Python Implementation
下面给出了一个示例,展示了如何使用 Python 中的 Pima-Indian-Diabetes 数据集实现简单线性回归。我们还将绘制回归线。
Data Preparation
1、我们首先需要从 scikit-learn 中导入 Diabetes 数据集,并将其拆分为训练集和测试集。我们将使用 80% 的数据训练模型,剩余 20% 的数据进行测试。
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
# Load the Diabetes dataset
diabetes = load_diabetes()
# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(diabetes.data[:, 2],
diabetes.target, test_size=0.2, random_state=0)
# Reshape the input data
X_train = X_train.reshape(-1, 1)
X_test = X_test.reshape(-1, 1)
2、在这里,我们使用数据集的第三个特征(列),即平均血压,作为我们的自变量(预测变量),目标变量作为我们的因变量(响应变量)。
Model Training
3、我们将使用 scikit-learn 的 LinearRegression 类在训练数据上训练一个简单线性回归模型。代码如下 −
from sklearn.linear_model import LinearRegression
# Create a linear regression object
lr_model = LinearRegression()
# Fit the model on the training data
lr_model.fit(X_train, y_train)
在此, X_train 表示训练数据的输入特征(平均收缩压), y_train 表示输出变量(目标变量)。
Model Testing
模型训练完毕后,我们可以用它对测试数据进行预测。代码如下 −
# Make predictions on the test data
y_pred = lr_model.predict(X_test)
在此, X_test 表示测试数据的输入特征, y_pred 表示预测的输出变量(目标变量)。
Model Evaluation
我们需要评估模型的性能以确定其准确性。我们将使用均方误差 (MSE) 和决定系数 (R^2) 作为评估指标。代码如下 −
from sklearn.metrics import mean_squared_error, r2_score
# 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)
在此, y_test 表示测试数据的实际输出变量。
Plotting the Regression Line
我们还可以可视化回归线,以了解它与数据拟合得如何。代码如下 −
import matplotlib.pyplot as plt
# Plot the training data
plt.scatter(X_train, y_train, color='gray')
# Plot the regression line
plt.plot(X_train, lr_model.predict(X_train), color='red', linewidth=2)
# Add axis labels
plt.xlabel('Mean Blood Pressure')
plt.ylabel('Disease Progression')
# Show the plot
plt.show()
在此,我们使用 matplotlib 库中的 scatter() 函数绘制训练数据点,使用 plot() 函数绘制回归线。 xlabel() 和 ylabel() 函数分别用于标记图表的 x 轴和 y 轴。最后,我们使用 show() 函数显示图表。
Complete Implementation Example
在 Python 中实现简单线性回归的完整代码如下 −
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
# Load the Diabetes dataset
diabetes = load_diabetes()
# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(diabetes.data[:, 2],
diabetes.target, test_size=0.2, random_state=0)
# Reshape the input data
X_train = X_train.reshape(-1, 1)
X_test = X_test.reshape(-1, 1)
# 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 training data
plt.figure(figsize=(7.5, 3.5))
plt.scatter(X_train, y_train, color='gray')
# Plot the regression line
plt.plot(X_train, lr_model.predict(X_train), color='red', linewidth=2)
# Add axis labels
plt.xlabel('Mean Blood Pressure')
plt.ylabel('Disease Progression')
# Show the plot
plt.show()
执行此代码后,您将得到以下图表作为输出,并且它还将在终端上打印均方误差和决定系数 −
Mean Squared Error: 4150.680189329983
Coefficient of Determination: 0.19057346847560164