利用Python使用梯度下降法实现对离散点的曲面拟合的代码,梯度下降法的代码需要自己写
时间: 2023-03-28 08:01:16 浏览: 110
基于Python的梯度下降法实现
以下是一个简单的 Python 代码实现梯度下降法对离散点进行曲面拟合:
```python
import numpy as np
# 定义梯度下降函数
def gradient_descent(X, y, alpha, num_iters):
m = len(y)
theta = np.zeros((X.shape[1], 1))
for i in range(num_iters):
h = np.dot(X, theta)
loss = h - y
gradient = np.dot(X.T, loss) / m
theta = theta - alpha * gradient
return theta
# 生成离散点数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))
# 将离散点数据转化为向量形式
X = np.column_stack((X.flatten(), Y.flatten()))
y = Z.flatten().reshape(-1, 1)
# 添加偏置项
X = np.column_stack((np.ones((X.shape[], 1)), X))
# 设置学习率和迭代次数
alpha = .01
num_iters = 100
# 进行梯度下降
theta = gradient_descent(X, y, alpha, num_iters)
# 输出拟合结果
print("拟合结果:")
print("theta = ", theta[])
print("theta1 = ", theta[1])
print("theta2 = ", theta[2])
```
这个代码实现了对离散点数据进行曲面拟合,使用了梯度下降法进行优化。其中,`X` 和 `y` 分别表示离散点的坐标和对应的函数值,`alpha` 和 `num_iters` 分别表示学习率和迭代次数。最终输出的是拟合结果,即三个参数的值。
阅读全文