gpt4 book ai didi

python - 机器学习,计算成本函数误差,得到大小为0的矩阵作为结果

转载 作者:行者123 更新时间:2023-11-30 09:18:09 27 4
gpt4 key购买 nike

import numpy as np
from matplotlib import pyplot as plot

def sigmoid(x):
return 1.0/(1+np.asmatrix(np.exp(-x)))

def graD(X,y,alpha,s0,numda):
m=np.size(X,0)
n=np.size(X,1)
X0=X[:,0]
X1=X[:,1:]

theta=np.asmatrix(np.zeros(np.size(X,1))).T
s=100
lit=0
Jlist=[]

while abs(s)>s0 and lit<=10000:
theta0=theta[0]
theta1=theta[1:]


theta0-=(float(alpha)/m)*X0.T*(sigmoid(X*theta)-y)
theta1-=float(alpha)*((1.0/m)*X1.T*(sigmoid(X*theta)-y)+float(numda)/m*theta1)
theta=np.vstack((np.asmatrix(theta0),np.asmatrix(theta1)))

Jlist.append( cost(X,y,theta,numda) )

lit+=1
s=sum((float(1.0)/m)*X.T*(sigmoid(X*theta)-y))/float(n)

plot.scatter( range(0, len(Jlist)), Jlist )

return theta


def cost(X,y,theta,numda):
m=X.shape[0]

J = (-1.0/m)*( (-y).T*np.log( sigmoid(X*theta) ) - (1-y).T*np.log(1- sigmoid(X*theta) ) ) + (numda/ (m*2)) * (theta[0,1:].T * theta[0,1:] )
return J

我已经打印出了计算逻辑回归成本函数的cost函数的结果,但我发现它是一个长度为0的[]

另外,我单独尝试使用:

c(X,y,theta,30)
Out[69]: matrix([], shape=(0, 0), dtype=float64)

而且这个问题也存在,我是ml和python的新手,实在解决不了这个问题

最佳答案

我认为你想做的是:

def cost(X,y,theta,numda):
m=X.shape[0]

J = (-1.0/m)*(np.dot(-y.T, np.log(sigmoid(np.dot(X,theta)))) - np.dot(1-y.T, np.log(1-sigmoid(np.dot(X, theta))))) + (numda/(m*2)) * (np.linalg.norm(theta[1:])**2)
return J

在 numpy 中,* 是逐元素乘积,而 np.dot() 是矩阵乘积。我认为这是您主要的困惑。

关于python - 机器学习,计算成本函数误差,得到大小为0的矩阵作为结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49896395/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com