def make_prediction(self, couple_test, value_of_neg_class):
        print('ST make_prediction')
        if self.type_ST == "MolView":
            list_train_samples, list_train_labels = self.make_ST_train_set(
                self.dico_target_of_mol[couple_test[1]][0],
                self.dico_target_of_mol[couple_test[1]][1], [couple_test[0]],
                self.K_prot, self.dico_prot2indice, self.threshold_prot,
                value_of_neg_class)
            K_train, K_test = self.make_Ktrain_and_Ktest_ST(
                list_train_samples, [couple_test[0]], self.K_prot,
                self.dico_prot2indice)

            Y_test_score = []
            for param in range(len(self.list_param)):
                if self.type_clf == "SVM":
                    clf = svm.SVC(kernel='precomputed',
                                  C=self.list_param[param],
                                  class_weight='balanced')
                    clf.fit(K_train, list_train_labels)
                    Y_test_score.append(clf.decision_function(K_test).tolist())
                elif self.type_clf == "KernelRidge":
                    clf = KernelRidge(alpha=self.list_param[param],
                                      kernel='precomputed')
                    clf.fit(K_train, list_train_labels)
                    Y_test_score.append(clf.predict(K_test).tolist())

        elif self.type_ST == "Kron":
            list_train_samples = []
            list_train_labels = []
            list_train_samples_mol, list_train_labels_mol = self.make_ST_train_set(
                self.dico_target_of_mol[couple_test[1]][0],
                self.dico_target_of_mol[couple_test[1]][1], [couple_test[0]],
                self.K_prot, self.dico_prot2indice, self.threshold_prot,
                value_of_neg_class)
            list_train_samples_prot, list_train_labels_prot = self.make_ST_train_set(
                self.dico_ligand_of_prot[couple_test[0]][0],
                self.dico_ligand_of_prot[couple_test[0]][1], [couple_test[1]],
                self.K_mol, self.dico_mol2indice, self.threshold_mol,
                value_of_neg_class)

            for el in list_train_samples_mol:
                list_train_samples.append((el, couple_test[1]))
            for el in list_train_samples_prot:
                list_train_samples.append((couple_test[0], el))
            list_train_labels = list_train_labels_mol + list_train_labels_prot

            list_train_samples, list_train_labels = self.update_with_extra_task_pairs(
                couple_test, list_train_samples, list_train_labels)

            K_train, K_test = self.make_Ktrain_and_Ktest_MT(
                list_train_samples, [couple_test])

            Y_test_score = []
            for param in range(len(self.list_param)):
                if self.type_clf == "SVM":
                    clf = svm.SVC(kernel='precomputed',
                                  C=self.list_param[param],
                                  class_weight='balanced')
                    clf.fit(K_train, list_train_labels)
                    Y_test_score.append(clf.decision_function(K_test).tolist())
                elif self.type_clf == "KernelRidge":
                    clf = KernelRidge(alpha=self.list_param[param],
                                      kernel='precomputed')
                    clf.fit(K_train, list_train_labels)
                    Y_test_score.append(clf.predict(K_test).tolist())

        return Y_test_score
Ejemplo n.º 2
0
    def run(self, ind_sampling, ind_fold, type_calcul, ind_fold_nested):
        if self.fold_setting=="S4":
            nb_fold = self.nb_fold * self.nb_fold
        self.load_CV_indexes(ind_sampling)
        
        if self.CV_type == 'ClusterCV_':
            ajout = self.CV_type
        else:
            ajout = 'CV_'
                
        if type_calcul=="Outer":
            K_train, K_test = self.make_Ktrain_and_Ktest_MT(self.samples_tr[ind_fold], self.samples_te[ind_fold])
            pred_score = []
            for param in range(len(self.list_param)):
                if self.type_clf=="SVM":
                    clf = svm.SVC(kernel='precomputed', C=self.list_param[param])
                    clf.fit(K_train, self.labels_tr[ind_fold])
                    Y_test_score = clf.decision_function(K_test).tolist()
                elif self.type_clf=="KernelRidge":
                    clf = KernelRidge(alpha=self.list_param[param], kernel='precomputed')
                    clf.fit(K_train, inner_labels_tr[ind_fold])
                    Y_test_score = clf.predict(K_test).tolist()
                else:
                    raise ValueError('invalid value of type_clf')
                pred_score.append(Y_test_score)
                del clf
                del Y_test_score
            pickle.dump(pred_score, open('saved_results/MT/MT_Nested'+str(self.nb_fold)+'fold'+ajout+self.fold_setting+"_"+self.type_clf+'_Nested_'+str(ind_fold)+'_'+str(ind_sampling)+".data", 'wb'))
            del K_train
            del K_test

        elif type_calcul=="Inner":
            inner_samples_tr = []
            inner_labels_tr = []
            inner_samples_te = []
            inner_labels_te = []
            for ind_t in range(self.nb_fold):
                if ind_t!=ind_fold_nested:
                    inner_samples_te.append(self.samples_te[ind_t])
                    inner_labels_te.append(self.labels_te[ind_t])
            for ind_temp in range(self.nb_fold-1):
                list_temp_sample = []
                list_temp_label = []
                for ind_temp_bis in range(self.nb_fold-1):
                    if ind_temp!=ind_temp_bis:
                        list_temp_sample += inner_samples_te[ind_temp_bis]
                        list_temp_label += inner_labels_te[ind_temp_bis]
                inner_samples_tr.append(list_temp_sample)
                inner_labels_tr.append(list_temp_label)

            K_train, K_test = self.make_Ktrain_and_Ktest_MT(inner_samples_tr[ind_fold_nested], inner_samples_te[ind_fold_nested])
            pred_score = []
            for param in range(len(self.list_param)):
                if self.type_clf=="SVM":
                    clf = svm.SVC(kernel='precomputed', C=self.list_param[param])
                    clf.fit(K_train, inner_labels_tr[ind_fold_nested])
                    Y_test_score = clf.decision_function(K_test).tolist()
                elif self.type_clf=="KernelRidge":
                    clf = KernelRidge(alpha=self.list_param[param], kernel='precomputed')
                    clf.fit(K_train, inner_labels_tr[ind_fold_nested])
                    Y_test_score = clf.predict(K_test).tolist()
                else:
                    raise ValueError('invalid value of type_clf')
                pred_score.append(Y_test_score)
                del clf
                del Y_test_score
            pickle.dump(pred_score, open('saved_results/MT/MT_Nested'+str(self.nb_fold)+'fold'+ajout+self.fold_setting+"_"+self.type_clf+'_In_'+str(ind_fold)+'_'+str(ind_fold_nested)+'_'+str(ind_sampling)+".data", 'wb'))
            del K_train
            del K_test