我将y设为(1,10),并将y预测为(1,10),而且我还有用于获得y预测的斜率和截距值。我在对数似然实现线性回归时感到困惑。我已经看到很多博客文章,但是没有一个工作(当然我做错了)。这是我制作的对数似然函数,它通过给定的斜率(a)和截距(b)告诉y预测的logL:-
import math
def loglik(a,b):
"prob of y, given values of a and b"
loglike=[]
for i in range(len(x)): #x has features
predicted=a*x[i]+b #doing prediction using given a and b
real=y[i] #actual label
l=math.log(predicted)/math.log(real) #not sure that it is right
loglike.append(l)
loglike=np.array(loglike)
result = np.prod(loglike)
return result
然后我必须调用此函数,创建结果数组并创建彩色网格,这就是我的操作方式:-
# a has slope and b has intercept of the fitted model
arange =[a-0.5,a-0.4,a-0.3,a-0.2,a-0.1,a,a+0.1,a+0.2,a+0.3,a+0.4] #(a-0.5,a+0.4)
brange = [b,b-4,b-3,b-2,b-1,b,b+1,b+2,b+3,b+4] #(b-5,b+4)
ll=[]
for i in range(10):
sublist=[]
for j in range(10):
sublist.append(loglik(arange[i],brange[j]))
ll.append(np.array(sublist))
arange=np.array(arange)
brange=np.array(brange)
ll=np.array(ll)
请告诉我我在做什么错,我已经尝试实现对数似然的公式,结果非常奇怪,这就是我知道我做错了的事情。之后,我必须通过最大化对数似然来选择a和b值,并进行梯度上升以实现回归模型。任何帮助将不胜感激。