def sample_fixmat(newmat, total, position, sample, signal, noise, m, n): s_list = [] for i in range(sample): r = round( (newmat[0][i]/total)*((10.0-noise)/10)*(position*sample) ) s_list.append(r/position) #print "s_list", s_list mat = [[0 for i in range(sample)]for j in range(position)] s = somechoose(sample, signal) for i in range(position): for j in range(sample): r = (random.randrange(10)+1)/10.0 if s_list[j] >= r:mat[i][j] = 1 if i == m or i == n: for z in range(signal): mat[i][s[z]] = 1 return mat
def sample_fixmat(newmat, total, position, sample, signal, noise, m, n): s_list = [] for i in range(sample): r = round((newmat[0][i] / total) * ((10.0 - noise) / 10) * (position * sample)) s_list.append(r / position) #print "s_list", s_list mat = [[0 for i in range(sample)] for j in range(position)] s = somechoose(sample, signal) for i in range(position): for j in range(sample): r = (random.randrange(10) + 1) / 10.0 if s_list[j] >= r: mat[i][j] = 1 if i == m or i == n: for z in range(signal): mat[i][s[z]] = 1 return mat
def normal_dist(sample, position, signal, mean, va, noise, weight, fix_data): if fix_data == "p": s_rate = [1 for i in range(sample)] else: s_rate = [] for s in range(sample): r = -1 while 0 > r or r > 1: r = random.normalvariate(mean, va) s_rate.append(r) if fix_data == "s": p_rate = [1 for i in range(position)] else: p_rate = [] for p in range(position): r = -1 while 0 > r or r > 1: r = random.normalvariate(mean, va) p_rate.append(r) mat = [[0 for i in range(sample)] for j in range(position)] total = 0 for s in range(sample): for p in range(position): total += s_rate[s] * p_rate[p] mf = 0 for i in range(position): for j in range(sample): #r = random.randrange(10)/10.0 #print "r", r mat[i][j] = s_rate[j] * p_rate[i] * weight / total mf += s_rate[j] * p_rate[i] * weight / total #if r < s_rate[j]*p_rate[i]*weight/total:mat[i][j] = 1 newmat, total = change_prob(mat, sample, position, fix_data) if fix_data == "b": """ pmat = [[0 for i in range(sample)]for j in range(position)] s = somechoose(sample, signal) s.sort() print "somechoose, length", len(s), s for i in range(position): for j in range(sample): r = random.randrange(10) if r >= noise:pmat[i][j] = 1 if i == m or i == n: for z in range(signal): pmat[i][s[z]] = 1 """ L = [] for i in range(position): for j in range(sample): tuple = (i, j) L.append((tuple, newmat[i][j])) arr = np.array(newmat) elnum = position * sample mat = [[0 for i in range(sample)] for j in range(position)] """ for i in range(10): for j in range(elnum/10): r = np.unravel_index(arr.argmin(), arr.shape) mat[r[0]][r[1]] = i*0.1 +0.05 arr[r[0]][r[1]] = 2.0 print "mat", mat """ pmat = [[0 for i in range(sample)] for j in range(position)] s1 = somechoose(sample, signal) s2 = somechoose(sample, signal) c = [] while (len(c) < sample * position * (10 - noise) / 10): choice = random_weight_choice(L) if choice not in c: c.append(choice) for k in range(len(c)): pmat[c[k][0]][c[k][1]] = 1 for z in range(signal): r1 = random.randrange(10) if (r1 < 5): pmat[0][s1[z]] = 1 pmat[1][s1[z]] = 0 else: pmat[0][s1[z]] = 0 pmat[1][s1[z]] = 1 r2 = random.randrange(10) if (r2 < 5): pmat[3][s2[z]] = 1 pmat[4][s2[z]] = 0 else: pmat[3][s2[z]] = 0 pmat[4][s2[z]] = 1 """ for i in range(position): for j in range(sample): #r = random.randrange(10) if mat[i][j] >= (noise)/10.0:pmat[i][j] = 1 if i == m or i == n: print "signal", signal for z in range(signal): print "s[z]", s[z] pmat[i][s[z]] = 1 """ if fix_data == "p": pmat = position_fixmat(newmat, total, position, sample, signal, noise, m, n) elif fix_data == "s": pmat = sample_fixmat(newmat, total, position, sample, signal, noise, m, n) return pmat
def normal_dist(sample, position, signal, mean, va, noise, weight, fix_data): if fix_data == "p":s_rate = [1 for i in range(sample)] else: s_rate = [] for s in range(sample): r = -1 while 0 > r or r > 1: r = random.normalvariate(mean, va) s_rate.append(r) if fix_data == "s":p_rate = [1 for i in range(position)] else: p_rate = [] for p in range(position): r = -1 while 0 > r or r > 1: r = random.normalvariate(mean, va) p_rate.append(r) mat = [[0 for i in range(sample)]for j in range(position)] total = 0 for s in range(sample): for p in range(position): total += s_rate[s]*p_rate[p] mf = 0 for i in range(position): for j in range(sample): #r = random.randrange(10)/10.0 #print "r", r mat[i][j] = s_rate[j]*p_rate[i]*weight/total mf += s_rate[j]*p_rate[i]*weight/total #if r < s_rate[j]*p_rate[i]*weight/total:mat[i][j] = 1 newmat, total = change_prob(mat, sample, position, fix_data) if fix_data == "b": """ pmat = [[0 for i in range(sample)]for j in range(position)] s = somechoose(sample, signal) s.sort() print "somechoose, length", len(s), s for i in range(position): for j in range(sample): r = random.randrange(10) if r >= noise:pmat[i][j] = 1 if i == m or i == n: for z in range(signal): pmat[i][s[z]] = 1 """ L=[] for i in range(position): for j in range(sample): tuple=(i,j) L.append((tuple, newmat[i][j])) arr = np.array(newmat) elnum = position*sample mat = [[0 for i in range(sample)]for j in range(position)] """ for i in range(10): for j in range(elnum/10): r = np.unravel_index(arr.argmin(), arr.shape) mat[r[0]][r[1]] = i*0.1 +0.05 arr[r[0]][r[1]] = 2.0 print "mat", mat """ pmat = [[0 for i in range(sample)]for j in range(position)] s1 = somechoose(sample, signal) s2 = somechoose(sample, signal) c = [] while (len(c) < sample*position*(10-noise)/10): choice = random_weight_choice(L) if choice not in c: c.append(choice) for k in range(len(c)): pmat[c[k][0]][c[k][1]] = 1 for z in range(signal): pmat[0][s1[z]] = 1 pmat[1][s1[z]] = 1 pmat[3][s2[z]] = 1 pmat[4][s2[z]] = 1 """ for i in range(position): for j in range(sample): #r = random.randrange(10) if mat[i][j] >= (noise)/10.0:pmat[i][j] = 1 if i == m or i == n: print "signal", signal for z in range(signal): print "s[z]", s[z] pmat[i][s[z]] = 1 """ if fix_data == "p":pmat = position_fixmat(newmat, total, position, sample, signal, noise, m, n) elif fix_data == "s":pmat = sample_fixmat(newmat, total, position, sample, signal, noise, m, n) return pmat