线性回归与非线性回归:1.1一元线性回归梯度下降法(实战)

 


梯度下降法一元线性回归

import numpy as np
import matplotlib.pyplot as plt

#载入数据
data = np.genfromtxt("data.csv",delimiter=",")#加载文件,分隔符为逗号
x_data = data[:,0]#存储第0列的所有数据
y_data = data[:,1]#存储第1列的所有数据

#学习率
lr = 0.0001
#截距
b = 0.0
#斜率
k = 0.0
#最大迭代次数
epochs = 50

#最小二乘法
def compute_error(b, k, x_data, y_data):
    totalError = 0
    for i in range(0,len(x_data)):
        totalError += (y_data[i] - (k * x_data[i] + b)) ** 2
    return totalError / float(len(x_data)) / 2.0


#梯度下降法求最小值
def gradient_descent_runner(x_data, y_data, b, k, lr, epochs):
    #计算总数据量
    m = len(x_data)
    #循环epochs次
    for i in range(epochs):
        b_grade = 0
        k_grade = 0
        #计算梯度总和在求平均
        for j in range(0, len(x_data)):
            b_grade += -(1/m) * (y_data[j] - (k * x_data[j] + b))
            k_grade += -(1/m) * (y_data[j] - (k * x_data[j] + b)) * x_data[j]
        #更新学习率
        b = b - (lr * b_grade)
        k = k - (lr * k_grade)

    return b,k 


print("Starting b = {0}, k = {1}, error = {2}".format(b, k, compute_error(b, k, x_data, y_data)))
print("Running...")
b,k = gradient_descent_runner(x_data, y_data, b, k, lr, epochs)
print("After {0} iterations b = {1}, k = {2}, error = {3}".format(epochs, b, k, compute_error(b, k, x_data, y_data)))

#画图
plt.plot(x_data, y_data, 'b.')
plt.plot(x_data, k*x_data+b, 'r')
plt.show()

  1. sklearn--一元线性回归
     

    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.linear_model import LinearRegression
    
    #载入数据
    data = np.genfromtxt("data.csv",delimiter=",")#加载文件,分隔符为逗号
    x_data = data[:,0,np.newaxis]
    y_data = data[:,1,np.newaxis]
    #创建并拟合模型
    model = LinearRegression()
    model.fit(x_data, y_data)
    
    #画图
    plt.plot(x_data, y_data,'b.')
    plt.plot(x_data,model.predict(x_data),'r')
    plt.show()
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值