机器学习记录第一天:简单的线性回归

菜鸟一个,希望每天记录自己所得,以便以后可以嘲笑自己

今天学了线性回归,公式什么的都推导了一遍,但是感觉还是编程会学的更快。

虽然python有线性回归的包,可以使用但是为了加深理解还是手动来一遍把。

在网上随机找了一组数据:

现在我们就需要利用这样一组数据来进行预测。

首先利用我们的最小二乘来写出我们的预测函数:

def predictfunc(x, w, b):
    y = w * x + b
    return y

利用w,b的公式来编写我们的代码:\omega =\frac{m\sum y_{i}x_{i}-\sum y_{i} \sum x_{i}}{m\sum x_{i}^{2} - (\sum x_{i})^2} , b = \frac{1}{m}\sum (y_{i}-wx_{i})

def w_b_calculator(x, y):
    d = len(x)
    w = (d*sum(x*y)-sum(x)*sum(y))/(d*sum(x*x)-sum(x)*sum(x))
    b = (sum(y)-sum(w*x))/d
    return w,b

这样我们就可以求得我们的w,b了 将w,b和需要预测的数据带入我们的predictfunc就能得到预测结果啦。

画图再显示一下:

import matplotlib.pyplot as plt
plt.scatter(x, y)
plt.plot(x, x*w+b, 'r')
plt.show()

算是得到我们想要的结果了啊。

手写代码帮助我们加深理解与记忆,熟练之后我们就可以直接使用python的库就可以了。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression


x = np.array([[56], [72], [69], [88], [102], [86], [76], [79], [94], [74]])
y = np.array([92, 102, 86, 110, 130, 99, 96, 102, 105, 92])
model = LinearRegression()
model.fit(x, y)
b = model.intercept_
w = model.coef_
plt.scatter(x, y)
plt.plot(x, x*w+b, 'r')
plt.show()

这里有两点需要注意下,第一注意看我们的x,数据都是按行分开的,因为值的属性就一个大小,如何换成多个属性的值,那么每一行就是包括了一个值的多个属性,这里需要注意下;第二就是intercept_和coef_,这里一个表示w一个表示b 都是内置的函数,并且第一点说的注意事项也是fit这个函数要求x必须那样表达。

可以在cmd界面使用help查看LinearRegression这个包的具体使用方法:

这里有很详细的介绍,在使用help之前记得先导入哈。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值