def train(training_data, set_id): EM_result = {} Utils.initPlot( len(no_of_experts), set_id) for ex in xrange(len(no_of_experts)): #generate expert #self.Training_instances = self.N - self.Testing_instanceswrong percentage #60% good:40 % bad print "For group ", ex expert_wrong_percentage = [] for i in xrange(int(no_of_experts[ex]*expert_bads)): #bads num = 0.90 #((random()%0.5) + 0.5) % 1.0 expert_wrong_percentage.append(num) for i in xrange(int(no_of_experts[ex]*expert_goods)): #goods num = 0.20 #random()%0.5 expert_wrong_percentage.append(num) crowds_EM = None failed = 0 iterations = 0 total_iter = 10 while iterations < total_iter : try: crowds_EM = Crowds_EM( training_data, min_class_label, max_class_label, expert_wrong_percentage, verbose= verbose_output, synthetic=synthetic_data) crowds_EM.run_EM_missing() except Exception,e: #Rerunning ... import traceback print traceback.print_exc() failed+=1 try: crowds_EM = Crowds_EM( training_data, min_class_label, max_class_label, expert_wrong_percentage, verbose= verbose_output, synthetic = synthetic_data) crowds_EM.run_EM_missing() except Exception,e: failed+=1 pass else : EM_result[ex] = crowds_EM.results break else : EM_result[ex] = crowds_EM.results break #print "iteration :" , iterations iterations+=1