Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何向量化Logistic回归?_Python_Machine Learning_Vectorization_Logistic Regression - Fatal编程技术网

Python 如何向量化Logistic回归?

Python 如何向量化Logistic回归?,python,machine-learning,vectorization,logistic-regression,Python,Machine Learning,Vectorization,Logistic Regression,我正在尝试使用python为coursera ML类实现正则化逻辑回归,但在矢量化它时遇到了很多困难。使用存储库: 我尝试了许多不同的方法,但从未获得正确的梯度或成本,这是我当前的实现: h = utils.sigmoid( np.dot(X, theta) ) J = (-1/m) * ( y.T.dot( np.log(h) ) + (1 - y.T).dot( np.log( 1 - h ) ) ) + ( lambda_/(2*m) ) * np.sum( np.square(theta

我正在尝试使用python为coursera ML类实现正则化逻辑回归,但在矢量化它时遇到了很多困难。使用存储库:

我尝试了许多不同的方法,但从未获得正确的梯度或成本,这是我当前的实现:

h = utils.sigmoid( np.dot(X, theta) )
J = (-1/m) * ( y.T.dot( np.log(h) ) + (1 - y.T).dot( np.log( 1 - h ) ) ) + ( lambda_/(2*m) ) * np.sum( np.square(theta[1:]) )
grad = ((1/m) * (h - y).T.dot( X )).T + grad_theta_reg
结果如下:

Cost         : 0.693147
期望

cost: 2.534819
梯度:

[-0.100000, -0.030000, -0.080000, -0.130000]
预期坡度:

[0.146561, -0.548558, 0.724722, 1.398003]

如果有人知道发生了什么,我们将不胜感激。

下面是逻辑回归矢量化版本的工作片段。你可以在这里看到更多

Main

theta\u t=np.数组([[-2]、-1]、[1]、[2]]
数据=np.arange(1,16)。重塑(3,5)。T
X_t=np.c_[np.ones((5,1)),数据/10]
y_t=(np.数组([[1],[0],[1],[0],[1]])>=0.5)*1
lambda_t=3
J、 梯度=lRCOST函数(θt,X t,y t,λt),lRCOST梯度(θt,X t,y t,λt,flattResult=False)
打印('\n成本:f\n',J)
打印('预期成本:2.534819\n')
打印('渐变:\n')
打印('f\n',渐变)
打印('预期的渐变:\n')
打印('0.146561\n-0.548558\n 0.724722\n 1.398003\n')
lrCostFunction

从sigmoid导入sigmoid
将numpy作为np导入
def lrCostFunction(θ、X、y、reg_λ):
“lRCOST函数计算逻辑回归的成本和梯度
正规化
J=lrcost函数(θ,X,y,λ)计算使用成本
θ作为正则logistic回归的参数和
成本w.r.t.与参数的梯度。
"""
m、 n=X.shape#培训示例数
θ=θ。重塑((n,1))
预测=S形(X点(θ))
成本(1-y)*np.log(1-预测)
成本0=-1*y*np.log(预测)
J=(1.0/m)*np.sum(cost_y_0-cost_y_1)+(reg_lambda/(2.0*m))*np.sum(np.power(θ[1:],2))
返回J
lrGradient

从sigmoid导入sigmoid
将numpy作为np导入
def lrGradient(θ,X,y,reg_λ,flattresult=True):
m、 n=X.形状
θ=θ。重塑((n,1))
预测=S形(np.dot(X,θ))
误差=np.减去(预测,y)
梯度=(1.0/m)*np.点(X.T,误差)
梯度,其中正则=梯度[1:]+(正则λ/m)*θ[1:]
firstRow=grad[0,:]。重塑((1,1))
grad=np.r\u[第一行,带规则的grad\u]
如果结果是:
返回梯度展平()
返回梯度
希望有帮助