python机器学习之线性回归详解

  • Post category:Python

Python机器学习之线性回归详解

线性回归是机器学习中最基本的模型之一,它用于预测一个连续的输出变量,基于一个或多个输入变量。在本攻略中,我们将介绍线性回归的基本概、模型训练和评估方法,并提供两个示例。

线性回归的基本概念

线性回归是一种用于建立输入变量和输出变量之间线性关系的模型。它的基形式为:

$$y = \beta_0 + \beta_1x_1 + \beta_2x_2 + … + \beta_nx_n$$

其中,$y$是输出变量,$x_1, x_2, …, x_n$是输入变量,$\beta_0, \beta_1, \beta_2, …, \beta_n$是模型的参数。

线性回归的目标是找到一组参数$\beta_0, \beta_1, \beta_2, …, \beta_n$,使得模型的预测值与实际值之间的误差最小化。这个误差通常使用最小二乘法来计算。

模型训练和评估方法

线性回归的模型训练通常使用梯度下降法或正规方程法。梯下降法是一种迭代优化算法,通过不断调整参数来最小化误差。正规方程法是一种解析方法通过求解参数的解析解来最小化误差。

线性回归的模型评估通常使用均方误差(MSE)或决定系数(R²)。均方误差是预测值与实际值之间的平方的平均值。决定系数是预测值与实际值之间的方差占总方差的比例。

示例一:梯度下降法训练线性回归模型

import numpy as np
import matplotlib.pyplot as plt

# 生成数据
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)

# 梯度下降法
eta = 0.1
n_iterations = 1000
m = 100

theta = np.random.randn(2, 1)

for iteration in range(n_iterations):
    gradients = 2/m * X.T.dot(X.dot(theta) - y)
    theta = - eta * gradients

# 绘制图像
X_new = np.array([[0], [2]])
X_new_b = np.c_[np.ones((2, 1)), X_new]
y_predict = X_new_b.dot(theta)

plt.plot(X, y, 'b.')
plt.plot(X_new, y_predict, 'r-', linewidth=2, label='Predictions')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

在上面代码中,我们使用梯度下降法训练了一个简单的线性回归模型,并使用matplotlib库绘制了原始数据点和模型的预测值。

示例二:使用正规方程法训练线性回归模型

import numpy as np
import matplotlib.pyplot as plt

# 生成数据
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)

# 正规方程法
X_b = np.c_[np((100, 1)), X]
theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)

# 绘制图像
X_new = np.array([[0], [2]])
X_new_b = np.c_[np.ones((2, 1 X_new]
y_predict = X_new_b.dot(theta_best)

plt.plot(X, y, 'b.')
plt.plot(X_new, y_predict, 'r-', linewidth=2, label='Predictions')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

在上面的代码中,我们使用正规方程法训练了一个简单的线性回归模型,并使用matplotlib库绘制了原始数据点和模型的预测值。

总结

本攻略介绍了线性回归的基本概念、模型训练和评方法,并提供了两个示例,分别是使用梯度下降法和正规方程法训练线性回归模型。线性回归是机器学习中最基本的模型之一,它的应用非常广泛,包括预测、分类、聚类等。