最小二乘法实现多元线性回归代码
时间: 2023-10-21 17:10:08 浏览: 135
以下是使用最小二乘法实现多元线性回归的示例代码:
```
import numpy as np
# 生成训练数据
X = np.array([[145, 2.1, 18], [156, 2.2, 20], [160, 2.4, 22], [170, 2.6, 24], [180, 2.8, 26]])
y = np.array([68, 71, 73, 76, 77])
# 计算回归系数
X_b = np.c_[np.ones((5,1)), X] # 添加常数列 x0 = 1
theta_hat = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
# 预测新数据
X_new = np.array([[162, 2.3, 21], [172, 2.7, 25]])
X_new_b = np.c_[np.ones((2,1)), X_new]
y_predict = X_new_b.dot(theta_hat)
# 打印结果
print("theta_hat:", theta_hat)
print("y_predict:", y_predict)
```
说明:
- 训练数据为 5 个样本,每个样本有 3 个特征;
- 样本特征分别为身高、体重指数、年龄,目标为预测体重;
- 使用最小二乘法计算回归系数;
- 预测两个新样本的体重。
相关问题
python 最小二乘法拟合多元线性回归代码
### 回答1:
以下是使用 Python 的 NumPy 库实现最小二乘法拟合多元线性回归模型的示例代码:
```python
import numpy as np
# 构造样本数据
X = np.array([[1, 2, 3], [1, 3, 4], [1, 4, 5], [1, 5, 6]])
y = np.array([4, 5, 6, 7])
# 求解参数向量 beta
beta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
# 打印参数向量 beta
print(beta)
```
在上面的代码中,我们构造了一个包含 4 个样本的数据集。每个样本有 3 个特征变量和一个目标变量。我们使用 `np.linalg.inv()` 函数计算矩阵的逆,使用 `dot()` 函数计算矩阵的乘积,来求解参数向量 beta。最后,我们打印出参数向量的值。
需要注意的是,上面的代码只是求解了参数向量 beta。如果要计算模型的预测值,还需要使用参数向量 beta 和新的观测数据来进行计算。
### 回答2:
Python中可以使用scikit-learn库来实现多元线性回归的最小二乘法拟合。
首先,需要导入所需的库和模块:
```
from sklearn.linear_model import LinearRegression
import numpy as np
```
然后,定义自变量X和因变量y:
```
X = np.array([[x1, x2, ...], [x1, x2, ...], ...]) # 自变量,每个样本的特征值
y = np.array([y1, y2, ...]) # 因变量,每个样本的目标值
```
接下来,创建一个线性回归模型,并使用fit()函数进行训练并拟合数据:
```
model = LinearRegression()
model.fit(X, y)
```
训练完毕后,可以使用模型的coef_属性来获取回归方程的系数,intercept_属性来获取截距:
```
coefficients = model.coef_ # 回归方程的系数
intercept = model.intercept_ # 回归方程的截距
```
最后,可以使用predict()函数对新的输入样本进行预测:
```
new_X = np.array([[x1, x2, ...], [x1, x2, ...], ...]) # 新的输入样本特征值
predicted_y = model.predict(new_X) # 预测的目标值
```
以上就是使用Python进行最小二乘法拟合多元线性回归的代码实现,其中使用了scikit-learn库中的LinearRegression类来实现线性回归模型的训练和预测。
### 回答3:
下面是使用Python实现最小二乘法进行多元线性回归拟合的代码:
```python
import numpy as np
# 输入数据
X = np.array([[1, 1], [1, 2], [1, 3], [1, 4]]) # 自变量,需要添加一列常数作为截距
Y = np.array([2, 3, 4, 5]) # 因变量
# 使用最小二乘法拟合多元线性回归
w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(Y)
# 输出拟合结果
print("拟合的参数为:", w)
```
代码实现的步骤如下:
1. 导入numpy库。
2. 定义输入的自变量X和因变量Y。
3. 使用最小二乘法公式求解多元线性回归的拟合参数w。
4. 打印输出拟合得到的参数w。
在代码中,首先定义了输入的自变量X和因变量Y。然后使用最小二乘法的公式 w = (X^T X)^(-1) X^T Y 来求解拟合参数w。其中,X^T表示矩阵X的转置,X^(-1)表示矩阵X的逆矩阵。
最后,打印输出得到的拟合参数w,即为多元线性回归的回归系数。
使用最小二乘法实现多元线性回归的python代码
以下是使用最小二乘法实现多元线性回归的Python代码示例:
```python
import numpy as np
# 示例数据
X = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
Y = np.array([10, 20, 30])
# 添加截距项
X_design = np.concatenate((X, np.ones((X.shape[0], 1))), axis=1)
# 使用最小二乘法求解参数估计值
beta_hat = np.linalg.inv(X_design.T @ X_design) @ X_design.T @ Y
# 输出参数估计结果
print('参数估计值:')
print(beta_hat)
# 预测新的因变量值
X_new = np.array([[2, 4, 6]])
X_new_design = np.concatenate((X_new, np.ones((X_new.shape[0], 1))), axis=1)
Y_pred = X_new_design @ beta_hat
print('预测的因变量值:')
print(Y_pred)
```
在上述代码中,首先定义了示例数据X和Y。然后,将自变量矩阵X添加截距项,构建设计矩阵X_design。接下来,使用最小二乘法求解参数估计值,其中参数beta_hat为最小二乘估计的参数向量。最后,使用得到的参数估计值对新的自变量值进行预测,得到预测的因变量值Y_pred。
请注意,这只是一个简单的示例代码,实际应用中可能需要根据具体问题进行适当的修改和调整。
阅读全文