Inferred `outdim` for ICA sometimes fails but without an informative explanation
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- julia
- Ambito
- machine-learning
Direzione di ricerca
Riprodurre l'esempio MLJ, quindi esaminare src/ica.jl:171 e la chiamata all'interfaccia in decomposition_models.jl:123 per tracciare come outdim=0 raggiunge la riduzione vuota. Decidere se il comportamento previsto debba essere un'inferenza migliore o un errore informativo, e verificare il comportamento scelto con un test di regressione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
The following works fine if outdim=0 is replaced with outdim=3. A more informative error message would be helpful, unless a better inference of outdim is more appropriate.
Sorry this is through the MLJ interface.
using MLJBase, MLJModels
ICA = @load ICA pkg=MultivariateStats
times = range(0, 8, length=2000)
sine_wave = sin.(2*times)
square_wave = sign.(sin.(3*times))
sawtooth_wave = map(t -> mod(2t, 2) - 1, times)
signals = hcat(sine_wave, square_wave, sawtooth_wave)
noisy_signals = signals + 0.2*randn(size(signals))
mixing_matrix = [ 1 1 1; 0.5 2 1; 1.5 1 2]
X = MLJ.table(noisy_signals*mixing_matrix)
model = ICA(outdim = 0, tol=0.1)
mach = machine(model, X) |> fit!
ERROR: MethodError: reducing over an empty collection is not allowed; consider supplying `init` to the reducer
Stacktrace:
[1] mapreduce_empty
@ ./reduce.jl:372
[2] reduce_empty(op::Base.MappingRF{typeof(identity), typeof(max)}, ::Type{Float64})
@ Base ./reduce.jl:361
[3] reduce_empty_iter
@ ./reduce.jl:384 [inlined]
[4] mapreduce_empty_iter(f::Function, op::Function, itr::Vector{Float64}, ItrEltype::Base.HasEltype)
@ Base ./reduce.jl:380
[5] _mapreduce(f::typeof(identity), op::typeof(max), ::IndexLinear, A::Vector{Float64})
@ Base ./reduce.jl:432
[6] _mapreduce_dim
@ ./reducedim.jl:365 [inlined]
[7] mapreduce
@ ./reducedim.jl:357 [inlined]
[8] _maximum
@ ./reducedim.jl:1015 [inlined]
[9] _maximum
@ ./reducedim.jl:1014 [inlined]
[10] maximum
@ ./reducedim.jl:1010 [inlined]
[11] fastica!(W::Matrix{Float64}, X::Matrix{Float64}, fun::MultivariateStats.Tanh{Float64}, maxiter::Int64, tol::Float64)
@ MultivariateStats ~/.julia/packages/MultivariateStats/F3eLE/src/ica.jl:171
[12] fit(::Type{…}, X::LinearAlgebra.Adjoint{…}, k::Int64; alg::Symbol, fun::MultivariateStats.Tanh{…}, do_whiten::Bool, maxiter::Int64, tol::Float64, mean::Nothing, winit::Matrix{…})
@ MultivariateStats ~/.julia/packages/MultivariateStats/F3eLE/src/ica.jl:250
[13] fit(model::MLJMultivariateStatsInterface.ICA, verbosity::Int64, X::Tables.MatrixTable{Matrix{Float64}})
@ MLJMultivariateStatsInterface ~/.julia/packages/MLJMultivariateStatsInterface/VOkse/src/models/decomposition_models.jl:123
[14] fit_only!(mach::Machine{…}; rows::Nothing, verbosity::Int64, force::Bool, composite::Nothing)
@ MLJBase ~/.julia/packages/MLJBase/fEiP2/src/machines.jl:680
[15] fit_only!
@ MLJBase ~/.julia/packages/MLJBase/fEiP2/src/machines.jl:606 [inlined]
[16] #fit!#63
@ MLJBase ~/.julia/packages/MLJBase/fEiP2/src/machines.jl:777 [inlined]
[17] fit!
@ MLJBase ~/.julia/packages/MLJBase/fEiP2/src/machines.jl:774 [inlined]
[18] |>(x::Machine{MLJMultivariateStatsInterface.ICA, true}, f::typeof(fit!))
@ Base ./operators.jl:917
[19] top-level scope
@ REPL[206]:1
Some type information was truncated. Use `show(err)` to see complete types.
- Lingua principale
- Julia
- Stelle
- 387
- Fork
- 83
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di JuliaStats/MultivariateStats.jl
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
tagbot-manual
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
JuliaStats/MultivariateStats.jl#238 · 1 commento ·
-
Return a result even when MetricMDS does not convergeForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
JuliaStats/MultivariateStats.jl#233 · 1 commento ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
Tutte le issue di JuliaStats/MultivariateStats.jl
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 62/100
SciML/DataDrivenDiffEq.jl#694 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
JuliaLang/LinearAlgebra.jl#1834 ·
I maintainer di solito rispondono entro 1 giorno
-
`RawAcquisitionData(acqData)` writes the repetition into the `average` counterForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
MagneticResonanceImaging/MRIReco.jl#332 ·
I maintainer di solito rispondono entro 1 giorno
-
Docstrings show df:DataFrame and an undefined function is exportedForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno