Is it possible to construct gaussian processes custom kernels with built in functions?

3 vues (au cours des 30 derniers jours)
I understand the way to construct custom kernels for gaussian processes, e.g.
kfcn = @(XN,XM,theta) exp(theta(1))^2*exp(-pdist2(XN,XM).^2/(2*exp(theta(2))^2))
I am wondering if it is possible to construct kernels from built in function names, e.g.
kfcn = 'exponential' + 'squaredexponential';
If not, does it mean we have to do it from scatch?
Any suggesion would be appreciated.

Réponse acceptée

Walter Roberson
Walter Roberson le 3 Mai 2023
You can use str2func to convert a function name or text expression into a function handle.
kfcns = {'exponential','squaredexponential'};
KFCN = str2func("@(x) " + strjoin(string(kfcns(:)) + "(x)", " + "))
KFCN = function_handle with value:
@(x)exponential(x)+squaredexponential(x)
  5 commentaires
Walter Roberson
Walter Roberson le 4 Mai 2023
The actual functions called are several layers down and obviouslyly not intended to be directly invoked by the user. For example toolbox/stats/classreg/+classreg/+learning/+coder/+gputils/squaredExponentialKfun.m
mono
mono le 4 Mai 2023
python scikit learn actually supports it. I feel it is quite convince as it is quite time consusing if constructing all the custom kernels from the scatch.

Connectez-vous pour commenter.

Plus de réponses (0)

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by