python线性回归用数学方法实现
时间: 2024-05-05 10:17:49 浏览: 105
线性回归的Python实现.zip
线性回归是一种基本的机器学习算法,用于建立输入变量和输出变量之间的线性关系。下面我们将介绍如何用数学方法实现简单的线性回归模型。
线性回归模型
线性回归模型建立了输入变量 $x$ 和输出变量 $y$ 之间的线性关系,该关系可以用以下公式表示:
$$y = \theta_0 + \theta_1 x + \epsilon$$
其中,$\theta_0$ 和 $\theta_1$ 是模型的参数,$\epsilon$ 是误差项。我们的目标是找到最佳的 $\theta_0$ 和 $\theta_1$ 值,使得模型能够最好地拟合数据。
最小二乘法
最小二乘法是一种常用的方法,用于估计线性回归模型中的参数。该方法通过最小化残差平方和来找到最佳拟合线。
残差是模型预测值和实际值之间的差异。残差平方和表示所有残差的平方之和,即:
$$\sum_{i=1}^{n} (y_i - (\theta_0 + \theta_1 x_i))^2$$
我们的目标是找到最小化残差平方和的 $\theta_0$ 和 $\theta_1$ 值。这可以通过对残差平方和进行求导来实现。求导后,我们可以得到以下方程组:
$$\frac{\partial}{\partial \theta_0}\sum_{i=1}^{n} (y_i - (\theta_0 + \theta_1 x_i))^2 = 0$$
$$\frac{\partial}{\partial \theta_1}\sum_{i=1}^{n} (y_i - (\theta_0 + \theta_1 x_i))^2 = 0$$
解这个方程组,我们可以得到以下公式:
$$\theta_1 = \frac{\sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})}{\sum_{i=1}^{n} (x_i - \bar{x})^2}$$
$$\theta_0 = \bar{y} - \theta_1 \bar{x}$$
其中,$\bar{x}$ 和 $\bar{y}$ 分别表示输入变量和输出变量的平均值。
Python 实现
下面是用 Python 实现简单线性回归模型的代码:
```python
import numpy as np
class LinearRegression:
def __init__(self):
self.theta_0 = None
self.theta_1 = None
def fit(self, X, y):
n = len(X)
mean_x = np.mean(X)
mean_y = np.mean(y)
num = 0
den = 0
for i in range(n):
num += (X[i] - mean_x) * (y[i] - mean_y)
den += (X[i] - mean_x) ** 2
self.theta_1 = num / den
self.theta_0 = mean_y - self.theta_1 * mean_x
def predict(self, X):
return self.theta_0 + self.theta_1 * X
```
我们可以使用该类来拟合数据并进行预测。例如,我们假设有以下数据:
```python
X = np.array([1, 2, 3, 4, 5])
y = np.array([1.5, 3.2, 4.5, 6.1, 7.8])
```
然后,我们可以使用如下的代码来创建模型、拟合数据并进行预测:
```python
model = LinearRegression()
model.fit(X, y)
print(model.predict(6))
```
输出结果为:
```
9.5
```
这表明,当输入变量为 6 时,该模型预测输出变量为 9.5。
阅读全文