Python 机器学习算法——线性回归(Linear Regression)
线性回归是一种基本而常用的机器学习算法,主要用于预测数值型目标变量与一个或多个特征变量之间的关系。其核心思想是在给定数据中寻找一个线性函数,使得这个函数尽可能准确地对目标变量进行预测。线性回归主要分为简单线性回归和多元线性回归。
简单线性回归
简单线性回归是指只有一个自变量(特征变量)和一个因变量(目标变量)之间的线性关系。模型的数学表达式为:
[ y = wx + b ]
其中,( y ) 是目标变量,( x ) 是自变量,( w ) 是权重(斜率),( b ) 是偏置(截距)。
多元线性回归
多元线性回归则是通过一个线性方程来描述多个自变量与因变量之间的关系。其数学表达式为:
[ y = w_1x_1 + w_2x_2 + ... + w_nx_n + b ]
其中,( x_1, x_2, ..., x_n ) 为自变量,( w_1, w_2, ..., w_n ) 为对应的权重。
Python 实现线性回归
在Python中,我们可以使用scikit-learn
库来实现线性回归。以下是一个简单的示例,展示如何使用scikit-learn
进行线性回归模型的训练和预测。
首先,我们需要安装 scikit-learn
。可以通过以下命令安装:
pip install scikit-learn
接下来,我们用一个示例数据集来训练线性回归模型。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# 生成示例数据
# 设置随机种子,便于重复性
np.random.seed(42)
X = 2 * np.random.rand(100, 1) # 生成100个在[0, 2]之间的随机数
y = 4 + 3 * X + np.random.randn(100, 1) # 生成目标值,添加一些噪音
# 数据拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建线性回归模型
model = LinearRegression()
# 训练模型
model.fit(X_train, y_train)
# 进行预测
y_pred = model.predict(X_test)
# 输出模型参数
print(f'权重 (Slope): {model.coef_[0][0]}')
print(f'偏置 (Intercept): {model.intercept_[0]}')
# 可视化结果
plt.scatter(X_test, y_test, color='blue', label='真实值')
plt.plot(X_test, y_pred, color='red', label='预测值')
plt.xlabel('自变量 X')
plt.ylabel('因变量 y')
plt.title('线性回归示例')
plt.legend()
plt.show()
在这个示例中,我们首先生成了一些随机数据,然后将数据分割为训练集和测试集。接着,使用 LinearRegression
创建一个线性回归模型并进行训练。最后,输出模型的权重和偏置,并通过图形可视化预测结果与真实值的关系。
结论
线性回归是一个强大而简单的工具,适用于许多实际问题。通过合适的特征选择和数据处理,我们可以使用线性回归模型来进行有效的预测。尽管线性回归的假设前提较多(如线性关系、正态分布等),但在许多情况下,它仍然是一个很好的起点,尤其是当我们对数据的分布情况还不非常了解时。