机器学习之线性回归梯度下降法
时间: 2023-12-22 11:28:06 浏览: 107
机器学习之梯度下降法
5星 · 资源好评率100%
线性回归是机器学习中的一种基本算法,梯度下降法是线性回归中常用的优化算法。下面是线性回归梯度下降法的实现步骤:
1.读取数据集,包括自变量和因变量。
2.初始化相关参数,包括学习率、迭代次数、截距和斜率等。
3.定义计算代价函数,常用的代价函数是均方误差(MSE)。
4.梯度下降,通过不断迭代更新截距和斜率,使得代价函数最小化。
5.执行梯度下降算法,得到最优的截距和斜率。
下面是Python代码实现:
```python
import numpy as np
# 读取数据集
def load_data(file_path):
data = np.loadtxt(file_path, delimiter=',')
x_data = data[:, :-1]
y_data = data[:, -1]
return x_data, y_data
# 初始化相关参数
def init_params():
b = 0
k = 0
learning_rate = 0.01
num_iterations = 1000
return b, k, learning_rate, num_iterations
# 定义计算代价函数
def compute_cost(b, k, x_data, y_data):
total_error = 0
for i in range(len(x_data)):
total_error += (y_data[i] - (k * x_data[i] + b)) ** 2
cost = total_error / float(len(x_data))
return cost
# 梯度下降
def gradient_descent(b, k, x_data, y_data, learning_rate, num_iterations):
m = float(len(x_data))
for i in range(num_iterations):
b_gradient = 0
k_gradient = 0
for j in range(len(x_data)):
b_gradient += (1/m) * ((k * x_data[j] + b) - y_data[j])
k_gradient += (1/m) * ((k * x_data[j] + b) - y_data[j]) * x_data[j]
b = b - (learning_rate * b_gradient)
k = k - (learning_rate * k_gradient)
return b, k
# 执行梯度下降算法
def linear_regression(file_path):
x_data, y_data = load_data(file_path)
b, k, learning_rate, num_iterations = init_params()
print("Starting parameters: b = {0}, k = {1}, cost = {2}".format(b, k, compute_cost(b, k, x_data, y_data)))
b, k = gradient_descent(b, k, x_data, y_data, learning_rate, num_iterations)
print("After {0} iterations: b = {1}, k = {2}, cost = {3}".format(num_iterations, b, k, compute_cost(b, k, x_data, y_data)))
# 调用线性回归函数
linear_regression('data.csv')
```
阅读全文