# Package for KPCA

**URL:** <https://discourse.julialang.org/t/package-for-kpca/74248>\
**Category:** Statistics\
**Created:** [January 8, 2022, 5:33pm UTC](https://discourse.julialang.org/t/package-for-kpca/74248 "2022-01-08T17:33:51Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![roh\_codeur](https://avatars.discourse-cdn.com/v4/letter/r/ce73a5/32.png) [@roh\_codeur](https://discourse.julialang.org/u/roh_codeur)\
**Post date:** [January 8, 2022, 5:33pm UTC](https://discourse.julialang.org/t/package-for-kpca/74248/1 "2022-01-08T17:33:51Z")

</div>

Hi, I am a newbie to Julia. I am looking for a package for KPCA please. I tried using MultivariateStats, unfortunately, ran into the below issue

[https://github.com/JuliaStats/MultivariateStats.jl/issues/164](https://github.com/JuliaStats/MultivariateStats.jl/issues/164)

I couldn’t find any other packages which would offer similar functionality - any ideas?

thanks  
Rohit

---

<div class="post-metadata">

**Author:** ![jbrea](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jbrea/32/3879_2.png) [@jbrea](https://discourse.julialang.org/u/jbrea)\
**Post date:** [January 8, 2022, 5:48pm UTC](https://discourse.julialang.org/t/package-for-kpca/74248/2 "2022-01-08T17:48:09Z")

</div>

Hi

I can’t reproduce your issue with julia 1.7.1.

Can you run the following in a fresh julia session and report the full error you get?

```julia
using Pkg; Pkg.activate(temp = true); Pkg.add.(["MultivariateStats", "RDatasets"])
using MultivariateStats, RDatasets

# load iris dataset
iris = dataset("datasets", "iris")

Xtr = Matrix(iris[!,1:4])'
Xtr_labels = convert(Array, iris[!,5])

model = fit(
KernelPCA,
Xtr;
kernel = (x, y) -> x'y,
maxoutdim = 3,
inverse = true,
)

```

---

<div class="post-metadata">

**Author:** ![roh\_codeur](https://avatars.discourse-cdn.com/v4/letter/r/ce73a5/32.png) [@roh\_codeur](https://discourse.julialang.org/u/roh_codeur)\
**Post date:** [January 9, 2022, 12:04pm UTC](https://discourse.julialang.org/t/package-for-kpca/74248/3 "2022-01-09T12:04:10Z")

</div>

@jbrea : Thanks mate. it works fine now. I should have tried with Julia 1.7.1.

ta!

---

<div class="post-metadata">

**Author:** ![matnbo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/matnbo/32/220166_2.png) [@matnbo](https://discourse.julialang.org/u/matnbo)\
**Post date:** [April 29, 2023, 9:17pm UTC](https://discourse.julialang.org/t/package-for-kpca/74248/4 "2023-04-29T21:17:18Z")

</div>

> [@roh\_codeur](#):
>
> I couldn’t find any other packages which would offer similar functionality - any ideas?

You may also try package [Jchemo.jl](https://github.com/mlesnoff/Jchemo.jl)

```julia
using Jchemo, JchemoData, 
using JLD2, CairoMakie, StatsBase

path_jdat = dirname(dirname(pathof(JchemoData)))
db = joinpath(path_jdat, "data/iris.jld2")
@load db dat
pnames(dat)
summ(dat.X)

X = dat.X[:, 1:4]
n = nro(X)

ntrain = 120
s = sample(1:n, ntrain; replace = false)
Xtrain = X[s, :]
Xtest = rmrow(X, s)

nlv = 3 ; gamma = 1e-2
fm = kpca(Xtrain; nlv = nlv, gamma = gamma) ;
pnames(fm)
fm.T # Scores
fm.P # Loadings
fm.T' * fm.T
fm.P' * fm.P

group = recodcat2int(dat.X.species[s])
plotxy(fm.T[:, 1], fm.T[:, 2], group).f

Jchemo.transform(fm, Xtest) # projection of new samples

res = Base.summary(fm) ;
pnames(res)
res.explvarx

```

Other kernel methods are [available](https://mlesnoff.github.io/Jchemo.jl/dev/domains/), for instance for kernel PLS.
