- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Julia 中实现一个简单的正则化逻辑回归算法。我想使用 Optim.jl 库来最小化我的成本函数,但我无法让它工作。
我的成本函数和梯度如下:
function cost(X, y, theta, lambda)
m = length(y)
h = sigmoid(X * theta)
reg = (lambda / (2*m)) * sum(theta[2:end].^2)
J = (1/m) * sum( (-y).*log(h) - (1-y).*log(1-h) ) + reg
return J
end
function grad(X, y, theta, lambda, gradient)
m = length(y)
h = sigmoid(X * theta)
# gradient = zeros(size(theta))
gradient = (1/m) * X' * (h - y)
gradient[2:end] = gradient[2:end] + (lambda/m) * theta[2:end]
return gradient
end
theta
是假设函数的参数向量,
lambda
是正则化参数。)
# those are handle functions I define to pass them as arguments:
c(theta::Vector) = cost(X, y, theta, lambda)
g!(theta::Vector, gradient::Vector) = grad(X, y, theta, lambda, gradient)
# then I do
optimize(c,some_initial_theta)
# or maybe
optimize(c,g!,initial_theta,method = :l_bfgs) # try a different algorithm
julia> optimize(c,initial_theta)
Results of Optimization Algorithm
* Algorithm: Nelder-Mead
* Starting Point: [0.0,0.0,0.0,0.0,0.0]
* Minimum: [1.7787162051775145,3.4584135105727145,-6.659680628594007,4.776952006060713,1.5034743945407143]
* Value of Function at Minimum: -Inf
* Iterations: 1000
* Convergence: false
* |x - x'| < NaN: false
* |f(x) - f(x')| / |f(x)| < 1.0e-08: false
* |g(x)| < NaN: false
* Exceeded Maximum Number of Iterations: true
* Objective Function Calls: 1013
* Gradient Call: 0
julia> optimize(c,g!,initial_theta,method = :l_bfgs)
Results of Optimization Algorithm
* Algorithm: L-BFGS
* Starting Point: [0.0,0.0,0.0,0.0,0.0]
* Minimum: [-6.7055e-320,-2.235e-320,-6.7055e-320,-2.244e-320,-6.339759952602652e-7]
* Value of Function at Minimum: 0.693148
* Iterations: 1
* Convergence: false
* |x - x'| < 1.0e-32: false
* |f(x) - f(x')| / |f(x)| < 1.0e-08: false
* |g(x)| < 1.0e-08: false
* Exceeded Maximum Number of Iterations: false
* Objective Function Calls: 75
* Gradient Call: 75
X
和
y
是训练集,
X
是一个 90x5 矩阵,
y
一个 90x1 的向量(也就是说,我的训练集取自 Iris - 我认为这并不重要)。
最佳答案
下面是我使用闭包和柯里化(Currying)的逻辑回归的成本和梯度计算函数(适用于那些习惯于返回成本和梯度的函数的人的版本):
function cost_gradient(θ, X, y, λ)
m = length(y)
return (θ::Array) -> begin
h = sigmoid(X * θ)
J = (1 / m) * sum(-y .* log(h) .- (1 - y) .* log(1 - h)) + λ / (2 * m) * sum(θ[2:end] .^ 2)
end, (θ::Array, storage::Array) -> begin
h = sigmoid(X * θ)
storage[:] = (1 / m) * (X' * (h .- y)) + (λ / m) * [0; θ[2:end]]
end
end
sigmoid(z) = 1.0 ./ (1.0 + exp(-z))
cost_gradient
在 Optim.jl 中执行以下操作:
using Optim
#...
# Prerequisites:
# X size is (m,d), where d is the number of training set features
# y size is (m,1)
# λ as the regularization parameter, e.g 1.5
# ITERATIONS number of iterations, e.g. 1000
X=[ones(size(X,1)) X] #add x_0=1.0 column; now X size is (m,d+1)
initialθ = zeros(size(X,2),1) #initialTheta size is (d+1, 1)
cost, gradient! = cost_gradient(initialθ, X, y, λ)
res = optimize(cost, gradient!, initialθ, method = ConjugateGradient(), iterations = ITERATIONS);
θ = Optim.minimizer(res);
predictions = sigmoid(X * θ) #X size is (m,d+1)
关于regression - 使用 Optim.jl 在 Julia 中进行逻辑回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32703119/
这就是我跑步时它返回给我的东西。我试图更新包,但仍然不起作用。我也试过重新安装Julia,这个包在重新安装后只会运行一次。然后我第二次跑步的时候。它将再次失败。我试着修复它已经很长时间了。。有人能帮我
假设我们有以下 Agents.jl + Makie.jl 工作流程: using Agents, Random, AgentsPlots, Makie, Observables mutable str
我有一个 L-BFGS 的实现,并且想从 LineSearches.jl 调用行搜索进行比较。但是,文档非常稀少,仅关注在 Optim.jl 的上下文中使用 Linesearches.jl。我找不到任
我正在尝试使用 PlutoUI 库的 Filepicker 元素 md"""上传要使用的逗号分隔值 (.csv) 文件:$(@bind user_csv FilePicker()) """ 允许用户上
我想获取数据帧的行数。 我可以通过 size(myDataFrame)[1] 实现这一点. 有更干净的方法吗? 最佳答案 如果您正在使用 DataFrames具体来说,那么你可以使用 nrow() :
我看到以下代码 - add $0x14,%esp mov %eax,%ebx test %ebx,%ebx jl 80590d7 我在理解上述代码时感到困惑。如果我们有像 t
我是 Julia 的新手。 在 DataFrames.jl 中,有没有办法选择给定类型的所有变量,或者名称中包含给定子字符串的所有变量? 例如在 R 中我们有: df %>% select_if(is
如标题所示,我想在 Pyplot.jl 中绘制一个具有相等(圆圈看起来像圆圈)和共享(绘图具有相同限制)轴的绘图。 每当我尝试使用 setp() 时都会出错,如 new pythonic style
我正在尝试绘制数据框的特定列,其名称包含 Julia Plots.jl(GR 后端)中的空格。 这是我的数据框架结构: 17-element Array{Symbol,1}: Symbol("DAT
我正在尝试确定是否可以在 Gadfly 图表上显示基础数据点。我知道我可以显示与特定点关联的标签,但如何在图表本身上显示实际值? 例如,在 Gadfly 文档中,假设我有这个图表: plot(x=ra
我正在尝试在 Pluto.jl 中制作打印语句。现在当我执行 println它打印到控制台,使用 PlutoUI扩展使打印语句工作但不在 for 循环中。 有没有办法将 for 循环打印到 Pluto
我正在使用 SimpleHypergraphs.jl 库并尝试从文本文件(例如 csv)构建超图。 例如,我想从这样的 csv 文件加载超图: 0.0, 7.0, 0.0, 0.0 1.3, 2.8,
通读了一些 Flux.jl 文档,我看到了这句话: Differentiable Programming:Existing Julia libraries are differentiable and
简单但看似没有答案的问题: 是否可以在 Plots.jl 中自定义图例以具有不同的 不同文本颜色的文本标签?使用 GR 后端。 最佳答案 如果您使用一个图,您可以将其与 Legendfontcolor
我经常想在数据表中找到一些分组变量的独特组合。使用 R + dplyr,我的正常工作流程是组合 groupby(data, var1, var2, var3) %>% summarise ,它返回一个
Searchlight.jl 是一个 Julia ORM 库。我想知道 Searchlight.jl 支持哪些数据类型。 Searchlight.jl 没有独立的文档。我们唯一可以引用的“官方文档”是
我对 Julia 还很陌生,目前正在学习如何用它求解微分方程。我试图运行 Christopher Rackauckas 编写的简单预制代码,但出现错误。可以找到代码here .我也写在这里: usin
我正在将 Matlab 代码移植到 julia 中,到目前为止我得到了惊人的结果:一个在 Matlab 中运行 5 个多小时的代码,julia 只用了 8 分钟多一点!但是我有一个问题......在
我正在尝试制作没有轴和网格线的曲面图。我发现我可以用grid = false关掉电网但我找不到删除轴线的方法。 surface(x2d, y2d, z2d, fill_z = color_mat, f
我想运行一个抓取工具,将不同类型的项目保存到单独的 JSON 行文件中。 我的 settings.py 有这个: ITEM_PIPELINES = { 'permits.pipelines.Pe
我是一名优秀的程序员,十分优秀!