Пример #1
0
    def decision_function(self, X):
        if self.is_fitted == False:
            raise NotFittedError(
                "This EasyMKL instance is not fitted yet. Call 'fit' with appropriate arguments before using this method."
            )

        if self.kernel == 'precomputed':
            K = check_KL_Y(X, self.Y)
        else:
            X = check_array(X,
                            accept_sparse='csr',
                            dtype=np.float64,
                            order="C")
            if X.shape[1] != self.n_f:
                raise ValueError("The number of feature in X not correspond")
                #K = self.K.set_test(X)
            K = kernel_list(self.X, X, self.K)

        if self.multiclass_ == True:
            return self.cls.decision_function(X)

        YY = matrix(np.diag(list(matrix(self.Y))))
        ker_matrix = matrix(summation(K, self.weights))
        z = ker_matrix * YY * self.gamma
        z = z - self.bias
        return np.array(list(z))
Пример #2
0
 def _check_test(self,X):
     if self.is_fitted == False:
         raise NotFittedError("This EasyMKL instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.")
     if self.kernel == 'precomputed':
         KL = check_KL_Y(X,self.Y)
     else:
         X = check_array(X, accept_sparse='csr', dtype=np.float64, order="C")
         if X.shape[1] != self.X.shape[1]:#self.n_f:
             raise ValueError("The number of feature in X not correspond")
         KL = self.gen(self.X,X).make_a_list(self.n_kernels).to_array()
     return KL
Пример #3
0
	def _prepare(self,X,Y):
		'''preprocess data before training'''
		check_classification_targets(Y)
		self.classes_ = np.unique(Y)
		if len(self.classes_) < 2:
			raise ValueError("The number of classes has to be almost 2; got ", len(self.classes_))
		self.multiclass_ = len(self.classes_) > 2

		KL = process_list(X,self.generator)				# X can be a samples matrix or Kernels List
		self.KL, self.Y = check_KL_Y(KL,Y)
		self.n_kernels = len(self.KL)
		return
Пример #4
0
	def _prepare(self,X,Y):
		'''preprocess data before training'''
		check_classification_targets(Y)
		self.classes_ = np.unique(Y)
		if len(self.classes_) < 2:
			raise ValueError("The number of classes has to be almost 2; got ", len(self.classes_))
		self.multiclass_ = len(self.classes_) > 2

		KL = process_list(X,self.generator)				# X can be a samples matrix or Kernels List
		self.KL, self.Y = check_KL_Y(KL,Y)
		self.n_kernels = len(self.KL)
		return
Пример #5
0
 def _input_checks(self, X, Y):
     '''valida l'input dell'algoritmo e fa un po di preprocessing'''
     if self.kernel == 'precomputed':
         self.KL = check_KL_Y(X,Y)
     else:
         X,Y = validation.check_X_y(X, Y, dtype=np.float64, order='C', accept_sparse='csr')
         self.KL = self.gen(X).make_a_list(self.n_kernels)
     check_classification_targets(Y)
     self.Y = Y
     self.X = X
     self.classes_ = np.unique(Y)
     if len(self.classes_) < 2:
         raise ValueError("The number of classes has to be almost 2; got ", len(self.classes_))
     
     if self.tracenorm:
         for k in self.KL:
             self.traces.append(traceN(k))
Пример #6
0
 def _input_checks(self, X, Y):
     '''valida l'input dell'algoritmo e fa un po di preprocessing'''
     if self.kernel == 'precomputed':
         self.K = check_KL_Y(X, Y)
     elif self.gen != None:
         X, Y = validation.check_X_y(X,
                                     Y,
                                     dtype=np.float64,
                                     order='C',
                                     accept_sparse='csr')
         self.K = self.gen.make_a_list(self.n_kernels)
     else:
         random.seed(1)
         X, Y = validation.check_X_y(X,
                                     Y,
                                     dtype=np.float64,
                                     order='C',
                                     accept_sparse='csr')
         self.K = random_generator(X).make_a_list(
             self.n_kernels)  #.to_array()    #da sistemare i parametri
         #self.K = poly_generator(X).make_a_list(20)#.to_array()
     check_classification_targets(Y)
     self.Y = Y
     self.X = X
     self.classes_ = np.unique(Y)
     if len(self.classes_) < 2:
         raise ValueError("The number of classes has to be almost 2; got ",
                          len(self.classes_))
     self.traces = []
     #for k in self.K:
     #    self.traces.append(traceN(k))
     if self.tracenorm and False:
         for k in self.K:
             self.traces.append(traceN(k))
         from MKL.utils import kernel_list
         if not type(self.K).__name__ == 'ndarray':  #== kernel_list:
             #print 'k_list'
             self.K /= self.traces
         else:
             #print 'array'
             c = [[[i for j in range(len(Y))] for k in range(len(Y))]
                  for i in self.traces]
             self.K /= np.array(c)
             del c
     self.n_f = X.shape[1]