У меня есть y как (1,10) и y-предсказано как (1,10), а также у меня есть значения наклона и перехвата, которые использовались для получения y-предсказания.У меня путаница в реализации линейной регрессии с логарифмической вероятностью.Я видел много постов в блоге для этого, но ни один из них не работает (конечно, я делаю что-то не так).Вот функция логарифмического правдоподобия, которую я сделал, которая сообщает logL о y-предсказании с некоторым заданным наклоном (a) и перехватом (b): -
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, максимизируя логоподобность, и выполнить градиентное восхождение, чтобы реализовать регрессионную модель.Любая помощь будет высоко ценится.