Source code for pimkl.factories.mkl_factory

from pymimkl import EasyMKL, UMKLKNN, AverageMKL
import logging
import numpy as np
logger = logging.getLogger(__name__)


[docs]class WeightedAverageMKL(AverageMKL): """small wrapping of AverageMKL where the additional cunstructor parameter kernels_weights is used to predict a final kernel rather than the average. The applied weights are corrected to sum up to one. """ def __init__(self, kernels_weights, *args, **kwargs): if np.any(kernels_weights < 0): raise ValueError( 'kernels_weights contains negative values:\n{}'. format(kernels_weights) ) self.given_kernels_weights = kernels_weights super().__init__(*args, **kwargs)
[docs] def fit(self, X, y=None): # set kernels (and average weights), tracefactors and so on AverageMKL.fit(self, X, y) # resetting the weights, that should be a convex sum kernels_weights = np.array( self.given_kernels_weights, order='F', dtype=np.float64 ) kernels_weights = kernels_weights / kernels_weights.sum() self.weights = kernels_weights self.kernels_weights = kernels_weights
MKL_FACTORY = { 'EasyMKL': EasyMKL, 'UMKLKNN': UMKLKNN, 'AverageMKL': AverageMKL, 'WeightedAverageMKL': WeightedAverageMKL }