电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

基于Python fminunc 的替代方法

瀏覽:4日期:2022-08-05 09:35:08

最近閑著沒事,想把coursera上斯坦福ML課程里面的練習,用Python來實現一下,一是加深ML的基礎,二是熟悉一下numpy,matplotlib,scipy這些庫。

在EX2中,優化theta使用了matlab里面的fminunc函數,不知道Python里面如何實現。搜索之后,發現stackflow上有人提到用scipy庫里面的minimize函數來替代。我嘗試直接調用我的costfunction和grad,程序報錯,提示(3,)和(100,1)dim維度不等,gradient vector不對之類的,試了N多次后,終于發現問題何在。。

首先來看看使用np.info(minimize)查看函數的介紹,傳入的參數有:

fun : callable The objective function to be minimized. ``fun(x, *args) -> float`` where x is an 1-D array with shape (n,) and `args` is a tuple of the fixed parameters needed to completely specify the function.x0 : ndarray, shape (n,) Initial guess. Array of real elements of size (n,), where ’n’ is the number of independent variables.args : tuple, optional Extra arguments passed to the objective function and its derivatives (`fun`, `jac` and `hess` functions).method : str or callable, optional Type of solver. Should be one of - ’Nelder-Mead’ :ref:`(see here) <optimize.minimize-neldermead>` - ’Powell’ :ref:`(see here) <optimize.minimize-powell>` - ’CG’ :ref:`(see here) <optimize.minimize-cg>` - ’BFGS’ :ref:`(see here) <optimize.minimize-bfgs>` - ’Newton-CG’ :ref:`(see here) <optimize.minimize-newtoncg>` - ’L-BFGS-B’ :ref:`(see here) <optimize.minimize-lbfgsb>` - ’TNC’ :ref:`(see here) <optimize.minimize-tnc>` - ’COBYLA’ :ref:`(see here) <optimize.minimize-cobyla>` - ’SLSQP’ :ref:`(see here) <optimize.minimize-slsqp>` - ’trust-constr’:ref:`(see here) <optimize.minimize-trustconstr>` - ’dogleg’ :ref:`(see here) <optimize.minimize-dogleg>` - ’trust-ncg’ :ref:`(see here) <optimize.minimize-trustncg>` - ’trust-exact’ :ref:`(see here) <optimize.minimize-trustexact>` - ’trust-krylov’ :ref:`(see here) <optimize.minimize-trustkrylov>` - custom - a callable object (added in version 0.14.0), see below for description. If not given, chosen to be one of ``BFGS``, ``L-BFGS-B``, ``SLSQP``, depending if the problem has constraints or bounds.jac : {callable, ’2-point’, ’3-point’, ’cs’, bool}, optional Method for computing the gradient vector. Only for CG, BFGS, Newton-CG, L-BFGS-B, TNC, SLSQP, dogleg, trust-ncg, trust-krylov, trust-exact and trust-constr. If it is a callable, it should be a function that returns the gradient vector: ``jac(x, *args) -> array_like, shape (n,)`` where x is an array with shape (n,) and `args` is a tuple with the fixed parameters. Alternatively, the keywords {’2-point’, ’3-point’, ’cs’} select a finite difference scheme for numerical estimation of the gradient. Options ’3-point’ and ’cs’ are available only to ’trust-constr’. If `jac` is a Boolean and is True, `fun` is assumed to return the gradient along with the objective function. If False, the gradient will be estimated using ’2-point’ finite difference estimation.

需要注意的是fun關鍵詞參數里面的函數,需要把優化的theta放在第一個位置,X,y,放到后面。并且,theta在傳入的時候一定要是一個一維shape(n,)的數組,不然會出錯。

然后jac是梯度,這里的有兩個地方要注意,第一個是傳入的theta依然要是一個一維shape(n,),第二個是返回的梯度也要是一個一維shape(n,)的數組。

總之,關鍵在于傳入的theta一定要是一個1D shape(n,)的,不然就不行。我之前為了方便已經把theta塑造成了一個(n,1)的列向量,導致使用minimize時會報錯。所以,學會用help看說明可謂是相當重要啊~

import numpy as npimport pandas as pdimport scipy.optimize as op def LoadData(filename): data=pd.read_csv(filename,header=None) data=np.array(data) return data def ReshapeData(data): m=np.size(data,0) X=data[:,0:2] Y=data[:,2] Y=Y.reshape((m,1)) return X,Y def InitData(X): m,n=X.shape initial_theta = np.zeros(n + 1) VecOnes = np.ones((m, 1)) X = np.column_stack((VecOnes, X)) return X,initial_theta def sigmoid(x): z=1/(1+np.exp(-x)) return z def costFunction(theta,X,Y): m=X.shape[0] J = (-np.dot(Y.T, np.log(sigmoid(X.dot(theta)))) - np.dot((1 - Y).T, np.log(1 - sigmoid(X.dot(theta))))) / m return J def gradient(theta,X,Y): m,n=X.shape theta=theta.reshape((n,1)) grad=np.dot(X.T,sigmoid(X.dot(theta))-Y)/m return grad.flatten() if __name__==’__main__’: data = LoadData(’ex2data1csv.csv’) X, Y = ReshapeData(data) X, initial_theta = InitData(X) result = op.minimize(fun=costFunction, x0=initial_theta, args=(X, Y), method=’TNC’, jac=gradient) print(result)

最后結果如下,符合MATLAB里面用fminunc優化的結果(fminunc:cost:0.203,theta:-25.161,0.206,0.201)

fun: array([0.2034977]) jac: array([8.95038682e-09, 8.16149951e-08, 4.74505693e-07]) message: ’Local minimum reached (|pg| ~= 0)’ nfev: 36 nit: 17 status: 0 success: True x: array([-25.16131858, 0.20623159, 0.20147149])

此外,由于知道cost在0.203左右,所以我用最笨的梯度下降試了一下,由于后面實在是太慢了,所以設置while J>0.21,循環了大概13W次。。可見,使用集成好的優化算法是多么重要。。。還有,在以前的理解中,如果一個學習速率不合適,J會一直發散,但是昨天的實驗發現,有的速率開始會發散,后面還是會收斂。

以上這篇基于Python fminunc 的替代方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 防爆型气象站_农业气象站_校园气象站_农业四情监测系统「山东万象环境科技有限公司」 | 打造全球沸石生态圈 - 国投盛世 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 低气压试验箱_高低温低气压试验箱_低气压实验箱 |林频试验设备品牌 | 全自动五线打端沾锡机,全自动裁线剥皮双头沾锡机,全自动尼龙扎带机-东莞市海文能机械设备有限公司 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 冷凝锅炉_燃气锅炉_工业燃气锅炉改造厂家-北京科诺锅炉 | 北京网站建设公司_北京网站制作公司_北京网站设计公司-北京爱品特网站建站公司 | 波纹补偿器_不锈钢波纹补偿器_巩义市润达管道设备制造有限公司 | 森旺-A级防火板_石英纤维板_不燃抗菌板装饰板_医疗板 | 沥青车辙成型机-车托式混凝土取芯机-混凝土塑料试模|鑫高仪器 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 土壤有机碳消解器-石油|表层油类分析采水器-青岛溯源环保设备有限公司 | 浙江红酒库-冰雕库-气调库-茶叶库安装-医药疫苗冷库-食品物流恒温恒湿车间-杭州领顺实业有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 服务器之家 - 专注于服务器技术及软件下载分享 | 汽车整车综合环境舱_军标砂尘_盐雾试验室试验箱-无锡苏南试验设备有限公司 | 带压开孔_带压堵漏_带压封堵-菏泽金升管道工程有限公司 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | 苏商学院官网 - 江苏地区唯一一家企业家自办的前瞻型、实操型商学院 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 杰福伦_磁致伸缩位移传感器_线性位移传感器-意大利GEFRAN杰福伦-河南赉威液压科技有限公司 | 北京征地律师,征地拆迁律师,专业拆迁律师,北京拆迁律师,征地纠纷律师,征地诉讼律师,征地拆迁补偿,拆迁律师 - 北京凯诺律师事务所 | 对辊破碎机_四辊破碎机_双齿辊破碎机_华盛铭重工 | 水厂自动化-水厂控制系统-泵站自动化|控制系统-闸门自动化控制-济南华通中控科技有限公司 | 高温热泵烘干机,高温烘干热泵,热水设备机组_正旭热泵 | 列管冷凝器,刮板蒸发器,外盘管反应釜厂家-无锡曼旺化工设备有限公司 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 通风天窗,通风气楼,屋顶通风天窗,屋顶通风天窗公司 | BAUER减速机|ROSSI-MERSEN熔断器-APTECH调压阀-上海爱泽工业设备有限公司 | 玉米加工设备,玉米深加工机械,玉米糁加工设备.玉米脱皮制糁机 华豫万通粮机 | 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 蒜肠网-动漫,二次元,COSPLAY,漫展以及收藏型模型,手办,玩具的新媒体.(原变形金刚变迷TF圈) | 模切之家-专注服务模切行业的B2B平台!| [官网]叛逆孩子管教_戒网瘾学校_全封闭问题青少年素质教育_新起点青少年特训学校 | 商标转让-商标注册-商标查询-软著专利服务平台 - 赣江万网 | 防爆电机_防爆电机型号_河南省南洋防爆电机有限公司 | PCB设计,PCB抄板,电路板打样,PCBA加工-深圳市宏力捷电子有限公司 | 阿米巴企业经营-阿米巴咨询管理-阿米巴企业培训-广东键锋企业管理咨询有限公司 | 影合社-影视人的内容合作平台| 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 |