madeleineudell / LowRankModels.jl

LowRankModels.jl is a julia package for modeling and fitting generalized low rank models.
Other
190 stars 65 forks source link

fix julia1 errors #93

Closed matbesancon closed 5 years ago

matbesancon commented 5 years ago

Some basic errors from transition to julia >= 1.x

matbesancon commented 5 years ago

It fixes the easy one, a tricky error still there is:

Iteration 60: objective value = 6.707929300030073
successfully fit matrix
Fitting GLRM
Iteration 10: objective value = 22.301748216432784
┌ Warning: The ordinal variable you've created is degenerate: it has only two levels. Consider using a Boolean variable instead; ordinal loss functions may have unexpected behavior on a degenerate ordinal domain.
└ @ LowRankModels ~/.julia/dev/LowRankModels/src/domains.jl:40
Fitting GLRM
ERROR: LoadError: LoadError: MethodError: no method matching evaluate(::MultinomialOrdinalLoss, ::Float64, ::Int64)
Closest candidates are:
  evaluate(::QuadLoss, ::Float64, ::Number) at /home/mbesancon/.julia/dev/LowRankModels/src/losses.jl:144
  evaluate(::L1Loss, ::Float64, ::Number) at /home/mbesancon/.julia/dev/LowRankModels/src/losses.jl:158
  evaluate(::HuberLoss, ::Float64, ::Number) at /home/mbesancon/.julia/dev/LowRankModels/src/losses.jl:174
  ...
Stacktrace:
 [1] #objective#49(::Array{Union{UnitRange{Int64}, Int64},1}, ::Bool, ::Function, ::GLRM, ::Array{Float64,2}, ::Array{Float64,2}, ::Array{Float64,2}) at /home/mbesancon/.julia/dev/LowRankModels/src/evaluate_fit.jl:15

It seems the method doesn't take a scalar

madeleineudell commented 5 years ago

Thanks! Yes, the tricky problem is caused by a column being marked as "Ordinal" despite containing only one value. It's next on my list...