怎么在python中利用梯度下降算法实现一个多线性回归
这篇文章给大家介绍怎么在python中利用梯度下降算法实现一个多线性回归,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
具体内容如下
importpandasaspd importmatplotlib.pylabasplt importnumpyasnp #Readdatafromcsv pga=pd.read_csv("D:\python3\data\Test.csv") #Normalizethedata归一化值(x-mean)/(std) pga.AT=(pga.AT-pga.AT.mean())/pga.AT.std() pga.V=(pga.V-pga.V.mean())/pga.V.std() pga.AP=(pga.AP-pga.AP.mean())/pga.AP.std() pga.RH=(pga.RH-pga.RH.mean())/pga.RH.std() pga.PE=(pga.PE-pga.PE.mean())/pga.PE.std() defcost(theta0,theta1,theta2,theta3,theta4,x1,x2,x3,x4,y): #Initializecost J=0 #Thenumberofobservations m=len(x1) #Loopthrougheachobservation #通过每次观察进行循环 foriinrange(m): #Computethehypothesis #计算假设 h=theta0+x1[i]*theta1+x2[i]*theta2+x3[i]*theta3+x4[i]*theta4 #Addtocost J+=(h-y[i])**2 #Averageandnormalizecost J/=(2*m) returnJ #Thecostfortheta0=0andtheta1=1 defpartial_cost_theta4(theta0,theta1,theta2,theta3,theta4,x1,x2,x3,x4,y): h=theta0+x1*theta1+x2*theta2+x3*theta3+x4*theta4 diff=(h-y)*x4 partial=diff.sum()/(x2.shape[0]) returnpartial defpartial_cost_theta3(theta0,theta1,theta2,theta3,theta4,x1,x2,x3,x4,y): h=theta0+x1*theta1+x2*theta2+x3*theta3+x4*theta4 diff=(h-y)*x3 partial=diff.sum()/(x2.shape[0]) returnpartial defpartial_cost_theta2(theta0,theta1,theta2,theta3,theta4,x1,x2,x3,x4,y): h=theta0+x1*theta1+x2*theta2+x3*theta3+x4*theta4 diff=(h-y)*x2 partial=diff.sum()/(x2.shape[0]) returnpartial defpartial_cost_theta1(theta0,theta1,theta2,theta3,theta4,x1,x2,x3,x4,y): h=theta0+x1*theta1+x2*theta2+x3*theta3+x4*theta4 diff=(h-y)*x1 partial=diff.sum()/(x2.shape[0]) returnpartial #对theta0进行求导 #Partialderivativeofcostintermsoftheta0 defpartial_cost_theta0(theta0,theta1,theta2,theta3,theta4,x1,x2,x3,x4,y): h=theta0+x1*theta1+x2*theta2+x3*theta3+x4*theta4 diff=(h-y) partial=diff.sum()/(x2.shape[0]) returnpartial defgradient_descent(x1,x2,x3,x4,y,alpha=0.1,theta0=0,theta1=0,theta2=0,theta3=0,theta4=0): max_epochs=1000#Maximumnumberofiterations最大迭代次数 counter=0#Intializeacounter当前第几次 c=cost(theta0,theta1,theta2,theta3,theta4,x1,x2,x3,x4,y)##Initialcost当前代价函数 costs=[c]#Letsstoreeachupdate每次损失值都记录下来 #Setaconvergencethresholdtofindwherethecostfunctioninminimized #Whenthedifferencebetweenthepreviouscostandcurrentcost #islessthanthisvaluewewillsaytheparametersconverged #设置一个收敛的阈值(两次迭代目标函数值相差没有相差多少,就可以停止了) convergence_thres=0.000001 cprev=c+10 theta0s=[theta0] theta1s=[theta1] theta2s=[theta2] theta3s=[theta3] theta4s=[theta4] #Whenthecostsconvergeorwehitalargenumberofiterationswillwestopupdating #两次间隔迭代目标函数值相差没有相差多少(说明可以停止了) while(np.abs(cprev-c)>convergence_thres)and(counter损失函数随迭代次数变换图:
关于怎么在python中利用梯度下降算法实现一个多线性回归就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
推荐阅读
-
Python多线程抓取代理服务器
Python作为一门功能强大的脚本语言来说,经常被用来写爬虫程序,下面是Python爬虫多线程抓取代理服务器。年前是用//lin...
-
Python中怎么动态声明变量赋值
这篇文章将为大家详细讲解有关Python中怎么动态声明变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中变量的存储原理是什么
本篇文章给大家分享的是有关python中变量的存储原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有...
-
Python中怎么引用传递变量赋值
这篇文章将为大家详细讲解有关Python中怎么引用传递变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中怎么获取程序执行文件路径
python中怎么获取程序执行文件路径,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的...
-
Python中如何获取文件系统的使用率
Python中如何获取文件系统的使用率,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴...
-
Python中怎么获取文件的创建和修改时间
这篇文章将为大家详细讲解有关Python中怎么获取文件的创建和修改时间,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读...
-
python中怎么获取依赖包
今天就跟大家聊聊有关python中怎么获取依赖包,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据...
-
python怎么实现批量文件加密功能
这篇文章主要介绍“python怎么实现批量文件加密功能”,在日常操作中,相信很多人在python怎么实现批量文件加密功能问题上存在...
-
python中怎么实现threading线程同步
小编给大家分享一下python中怎么实现threading线程同步,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!...