用Python写线性回归算法

'''
    y = w_1 x + w_0
'''

import numpy as np
import matplotlib.pyplot as plt
x = np.array([0.5, 0.6, 0.8, 1.1, 1.4])
y = np.array([5.0, 5.5, 6.0, 6.8, 6.8])
w1 = 1
w0 = 1
eta = 0.01
epoch = 3000
for i in range(epoch):
    loss = ((w1*x+w0-y)**2).sum()/2
    print('轮数:{:3},w1:{:.8f},w0:{:.8f},Loss:{:.8f}'.format(i,w1,w0,loss))
    d0 = (w0+w1*x -y).sum()
    d1 = (x*(w1*x + w0-y)).sum()
    w0 = w0-eta * d0
    w1 = w1 - eta * d1

pred_y = w1*x+w0
plt.plot(x, pred_y, color='orangered')
plt.scatter(x,y)
plt.show()

用sklearn的写法:

import numpy as np
import sklearn.linear_model as lm
x = np.array([[0.5], [0.6], [0.8], [1.1], [1.4]])
y = np.array([5.0, 5.5, 6.0, 6.8, 6.8])

model = lm.LinearRegression()
model.fit(x,y)
pred_y = model.predict(x)

print("coef_:",model.coef_)
print("intercept_:", model.intercept_)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值