def askCrowd(data, mode): #for asking a sample from crowd cp = CrowsDis("../data/ProtonBeamCrowddata.txt") cp.proportion() cp.voting() feature_dict = { i: label for i, label in zip(range(3), ('pmid', 'text', 'label')) } crowddata = (data[[0, 1]].values).tolist() label = [] if mode == 'all': for i in range(0, len(data["pmid"])): label.append(cp.getvotes()[data['pmid'][i]]) if mode == '1': pidval = data['pmid'].values for i in range(0, len(data["pmid"])): label.append(cp.getcrowdvotequestion1()[pidval[i]]) crowdlabel = (np.array([label]).T).tolist() data = np.array([t1 + t2 for t1, t2 in zip(crowddata, crowdlabel)]) columns = [l for i, l in sorted(feature_dict.items())] return pd.DataFrame(data, columns=columns) #make dataframe from M sample
def wallace(pid, y_real): cp = CrowsDis("../data/ProtonBeamCrowddata.txt") cp.proportion() for i in range(1, 6): print i label = [] cp.wallaceExpriment(i) for item in pid: label.append(cp.getvotes()[item]) cm = confusion_matrix(y_real, label).flatten() sensitivity, specificity, precision, loss = compute_measures(*cm) print sensitivity print specificity
def getcustomizevoting(crowdlist, pid): result = defaultdict(list) cp = CrowsDis("../data/ProtonBeamCrowddata.txt") cp.proportion() combinationcrowd = [] for i in xrange(4, len(crowdlist)): combinationcrowd.append(list(itertools.combinations(crowdlist, i))) for indexgroup in range(len(combinationcrowd)): # for item in range(len(combinationcrowd[indexgroup])): label = [] # convert crowd votes dict to ordered labels cp.customizevoting(len(crowdlist), list(combinationcrowd[indexgroup][item])) print cp.getvotes() for item in pid: label.append( cp.getvotes()[item]) # to be add lables in the same order result[indexgroup].append(label) return result