用Python写一个梯度下降法,并线性回归显示 点
时间: 2023-04-07 17:05:22 浏览: 131
我可以回答这个问题。梯度下降法是一种常用的优化算法,用于求解损失函数的最小值。在线性回归中,我们可以使用梯度下降法来求解最小二乘法的参数。以下是一个用Python实现梯度下降法的示例代码:
```python
import numpy as np
# 定义损失函数
def loss_function(X, y, theta):
m = len(y)
J = np.sum((X.dot(theta) - y) ** 2) / (2 * m)
return J
# 定义梯度下降函数
def gradient_descent(X, y, theta, alpha, num_iters):
m = len(y)
J_history = np.zeros(num_iters)
for i in range(num_iters):
theta = theta - alpha * (X.T.dot(X.dot(theta) - y)) / m
J_history[i] = loss_function(X, y, theta)
return theta, J_history
# 生成随机数据
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 = np.random.randn(2, 1)
# 设置学习率和迭代次数
alpha = 0.1
num_iters = 1000
# 运行梯度下降算法
theta, J_history = gradient_descent(X_b, y, theta, alpha, num_iters)
# 打印最终参数和损失函数值
print("最终权重:", theta)
print("损失函数值:", J_history[-1])
# 绘制线性回归图像
import matplotlib.pyplot as plt
plt.scatter(X, y)
plt.plot(X, X_b.dot(theta), 'r-')
plt.show()
```
这段代码会生成一些随机数据,并使用梯度下降法求解最小二乘法的参数。最后,它会绘制出线性回归的图像。
阅读全文