Optim.jl по простой логистике c регрессия - PullRequest
2 голосов
/ 30 марта 2020

Я знаю, что этот вопрос задавался ранее, но ответ, предоставленный в регрессии Logisti c в Юлии с использованием Optim.jl , больше не работает. Мой код выглядит следующим образом ....

sigmoid(x) = 1 ./ (1 .+ exp.(-x));
function costfunction(θ,X,y)
    m = length(y);
    J = 0;
    grad = zeros(size(θ));
    c(X,i,θ)=sigmoid(θ[1]+X[i,2]*θ[2]+X[i,3]*θ[3]);
    for i in 1:m
        d = c(X,i,θ);
        J += y[i]==0 ? (-log(1-d)) : (-log(d));
    end
    J/=m;
    for i in 1 : length(θ)
        for j in 1:m
            grad[i] += (c(X,j,θ) - y[j])*X[j,i];
        end
        grad[i]/=m;
    end
    return J,grad;
end
cost, grad! = costfunction(initial_theta,X,y);
res = optimize(cost, grad!, , method = ConjugateGradient(), iterations = 1000); `

initial_theta равно [0,0,0]

X - это фрейм данных размером 99x3 (первый столбец - 1 с), y - вектор с 99 элементами

Как найти тета для свернутой функции с помощью Optim.jl?

1 Ответ

0 голосов
/ 28 апреля 2020

cost(θ)=costfunction(θ,X,y)[1]; grad!(θ)=costfunction(θ,X,y)[2]; res = optimize(cost, grad!, initial_theta, LBFGS();inplace = false); θ = Optim.minimizer(res);

на месте = ложный параметр присутствовал в документации optim.jl https://julianlsolvers.github.io/Optim.jl/stable/#user / минимизация /

...