python的梯度下降代码怎么写
时间: 2024-01-22 18:11:44 浏览: 91
以下是一个基本的梯度下降算法的Python代码示例:
```
# 定义代价函数(cost function)
def cost_function(theta, X, y):
m = len(y)
predictions = X.dot(theta)
cost = (1/2*m) * np.sum(np.square(predictions-y))
return cost
# 定义梯度下降函数
def gradient_descent(X, y, theta, learning_rate, iterations):
m = len(y)
cost_history = np.zeros(iterations)
theta_history = np.zeros((iterations, 2))
for i in range(iterations):
predictions = X.dot(theta)
theta = theta - (1/m) * learning_rate * (X.T.dot(predictions-y))
theta_history[i,:] = theta.T
cost_history[i] = cost_function(theta, X, y)
return theta, cost_history, theta_history
# 定义数据集
X = np.array([[1, 1], [1, 2], [1, 3], [1, 4]])
y = np.array([[2], [4], [6], [8]])
# 初始化参数
theta = np.zeros((2,1))
# 设定学习率和迭代次数
learning_rate = 0.01
iterations = 1000
# 运行梯度下降算法
theta, cost_history, theta_history = gradient_descent(X, y, theta, learning_rate, iterations)
# 输出最终的theta参数和代价函数值
print('Theta0: ', theta[0])
print('Theta1: ', theta[1])
print('Final cost/MSE: ', cost_history[-1])
```
在这个例子中,我们定义了一个2维的数据集X和一个对应的输出向量y。我们将使用梯度下降算法来确定一个线性函数y = theta0 + theta1 * x,其中theta0和theta1是我们需要确定的参数。我们使用代价函数来计算预测值和实际值之间的误差,并使用梯度下降来最小化这个误差。最终,我们输出最终的theta参数和代价函数值。
阅读全文