首页 > 编程 > Python > 正文

python实现机器学习之元线性回归

2020-01-04 14:34:41
字体:
来源:转载
供稿:网友

一、理论知识准备

1.确定假设函数 

如:y=2x+7 
其中,(x,y)是一组数据,设共有m个

2.误差cost 

用平方误差代价函数 

python,机器学习,元线性回归

3.减小误差(用梯度下降) 

python,机器学习,元线性回归 
python,机器学习,元线性回归

二、程序实现步骤

1.初始化数据 

x、y:样本 
learning rate:学习率 
循环次数loopNum:梯度下降次数

2.梯度下降 

循环(循环loopNum次): 
(1)算偏导(需要一个for循环遍历所有数据) 
(2)利用梯度下降数学式子

三、程序代码

import numpy as npdef linearRegression(data_x,data_y,learningRate,loopNum):  w,b=0,0  #梯度下降  for i in range(loopNum):    w_derivative, b_derivative, cost = 0, 0, 0    for j in range(len(data_x)):      wxPlusb=w*data_x[j]+b      w_derivative+=(wxPlusb-data_y[j])*data_x[j]      b_derivative+=wxPlusb-data_y[j]      cost+=(wxPlusb-data_y[j])*(wxPlusb-data_y[j])    w_derivative=w_derivative/len(data_x)    b_derivative=b_derivative/len(data_x)    w = w - learningRate*w_derivative    b = b - learningRate*b_derivative    cost = cost/(2*len(data_x))    if i%100==0:      print(cost)  print(w)  print(b)if __name__== "__main__": #_x:protected __x:private  x=np.random.normal(0,10,100)  noise=np.random.normal(0,0.05,100)  y=2*x+7+noise  linearRegression(x,y,0.01,5000)

四、输出

1.输出cost 

python,机器学习,元线性回归

可以看到,一开始的误差是很大的,然后减小了 

python,机器学习,元线性回归

最后几次输出的cost没有变化,可以将训练的次数减小一点

2.训练完的w和b 

python,机器学习,元线性回归

和目标w=2,b=7很接近

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到python教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表