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.ones((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库绘制了原始数据点和模型的预测值。
总结
本攻略介绍了线性回归的基本概念、模型训练和评方法,并提供了两个示例,分别是使用梯度降法和正规方程法训练线性回归模型。线性回归是机器学习中最基本的模型之一,它应用非常广泛,包括预测、分类、聚类等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python机器学习之线性回归详解 - Python技术站