@@ -44,11 +44,11 @@ function MMI.fit(model::PCA, verbosity::Int, X)
4444 )
4545 cache = nothing
4646 report = (
47- indim= MS. indim (fitresult),
48- outdim= MS. outdim (fitresult),
47+ indim= MS. size (fitresult, 1 ),
48+ outdim= MS. size (fitresult, 2 ),
4949 tprincipalvar= MS. tprincipalvar (fitresult),
5050 tresidualvar= MS. tresidualvar (fitresult),
51- tvar= MS. tvar (fitresult),
51+ tvar= MS. var (fitresult),
5252 mean= copy (MS. mean (fitresult)),
5353 principalvars= copy (MS. principalvars (fitresult))
5454 )
@@ -113,9 +113,9 @@ function MMI.fit(model::KernelPCA, verbosity::Int, X)
113113 )
114114 cache = nothing
115115 report = (
116- indim= MS. indim (fitresult),
117- outdim= MS. outdim (fitresult),
118- principalvars= copy (MS. principalvars (fitresult))
116+ indim= MS. size (fitresult, 1 ),
117+ outdim= MS. size (fitresult, 2 ),
118+ principalvars= copy (MS. eigvals (fitresult))
119119 )
120120 return fitresult, cache, report
121121end
@@ -168,14 +168,19 @@ $ICA_DESCR
168168end
169169
170170function MMI. fit (model:: ICA , verbosity:: Int , X)
171+ icagfun (fname:: Symbol , :: Type{T} = Float64) where T<: Real =
172+ fname == :tanh ? MS. Tanh {T} (1.0 ) :
173+ fname == :gaus ? MS. Gaus {T} () :
174+ error (" Unknown gfun $(fname) " )
175+
171176 Xarray = MMI. matrix (X)
172177 n, p = size (Xarray)
173178 m = min (n, p)
174179 k = ifelse (model. k ≤ m, model. k, m)
175180 fitresult = MS. fit (
176181 MS. ICA, transpose (Xarray), k;
177182 alg= model. alg,
178- fun= MS . icagfun (model. fun, eltype (Xarray)),
183+ fun= icagfun (model. fun, eltype (Xarray)),
179184 do_whiten= model. do_whiten,
180185 maxiter= model. maxiter,
181186 tol= model. tol,
@@ -184,8 +189,8 @@ function MMI.fit(model::ICA, verbosity::Int, X)
184189 )
185190 cache = nothing
186191 report = (
187- indim= MS. indim (fitresult),
188- outdim= MS. outdim (fitresult),
192+ indim= MS. size (fitresult, 1 ),
193+ outdim= MS. size (fitresult, 2 ),
189194 mean= copy (MS. mean (fitresult))
190195 )
191196 return fitresult, cache, report
@@ -244,8 +249,8 @@ function MMI.fit(model::PPCA, verbosity::Int, X)
244249 )
245250 cache = nothing
246251 report = (
247- indim= MS. indim (fitresult),
248- outdim= MS. outdim (fitresult),
252+ indim= MS. size (fitresult, 1 ),
253+ outdim= MS. size (fitresult, 2 ),
249254 tvar= MS. var (fitresult),
250255 mean= copy (MS. mean (fitresult)),
251256 loadings= MS. loadings (fitresult)
@@ -308,8 +313,8 @@ function MMI.fit(model::FactorAnalysis, verbosity::Int, X)
308313 )
309314 cache = nothing
310315 report = (
311- indim= MS. indim (fitresult),
312- outdim= MS. outdim (fitresult),
316+ indim= MS. size (fitresult, 1 ),
317+ outdim= MS. size (fitresult, 2 ),
313318 variance= MS. var (fitresult),
314319 covariance_matrix= MS. cov (fitresult),
315320 mean= MS. mean (fitresult),
@@ -346,7 +351,7 @@ for (M, MFitResultType) in model_types
346351 @eval function MMI. transform (:: $M , fr:: $MFitResultType , X)
347352 # X is n x d, need to transpose twice
348353 Xarray = MMI. matrix (X)
349- Xnew = transpose (MS. transform (fr, transpose (Xarray)))
354+ Xnew = transpose (MS. predict (fr, transpose (Xarray)))
350355 return MMI. table (Xnew, prototype= X)
351356 end
352357
0 commit comments