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
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