根据提供的数据集linearRegression_data.txt文件采用梯度下降的方法建立线性回归模型python代码怎么写?
时间: 2024-04-01 16:34:09 浏览: 48
首先,你需要读取linearRegression_data.txt文件中的数据并将其存储在一个Numpy数组中。假设数据文件中的第一列是特征,第二列是目标变量,你可以使用以下代码读取数据:
```python
import numpy as np
data = np.loadtxt('linearRegression_data.txt', delimiter=',')
X = data[:, 0] # 特征
y = data[:, 1] # 目标变量
m = len(y) # 样本数量
```
接下来,你需要定义代价函数和梯度下降函数。假设模型为$y = \theta_0 + \theta_1 x$,代价函数和梯度下降函数可以分别定义为:
```python
def cost_function(X, y, theta):
J = np.sum((X.dot(theta) - y) ** 2) / (2 * m)
return J
def gradient_descent(X, y, theta, alpha, num_iters):
J_history = np.zeros(num_iters)
for i in range(num_iters):
theta = theta - (alpha / m) * (X.T.dot(X.dot(theta) - y))
J_history[i] = cost_function(X, y, theta)
return theta, J_history
```
其中,`cost_function`计算代价函数的值,`gradient_descent`执行梯度下降算法并返回学习到的参数$\theta$和每次迭代的代价函数值。`alpha`是学习率,`num_iters`是迭代次数。
最后,你可以使用以下代码运行梯度下降算法并输出学习到的参数和代价函数的变化:
```python
# 添加一列全为1的向量作为截距
X = np.hstack((np.ones((m, 1)), X.reshape(m, 1)))
# 初始化参数
theta = np.zeros(2)
# 运行梯度下降算法
alpha = 0.01
num_iters = 1500
theta, J_history = gradient_descent(X, y, theta, alpha, num_iters)
# 输出学习到的参数和代价函数的变化
print('Theta found by gradient descent: {:.4f}, {:.4f}'.format(*theta))
```
你可以根据实际情况修改学习率和迭代次数。在运行完上述代码后,你应该能够得到学习到的参数和代价函数的变化。
阅读全文