def generateVantagePointsWithManyAlgorithm(options): numberOfData = options['numberOfData'] dim = options['numberOfDimension'] numberOfVP = options['numberOfVP'] cardinality = options['numberOfAlphabet'] typeOfVP = options['typeOfVP'] datas = utils.getDataInFile(utils.getDataFileName(options)) vps = [] vps.append(datas[0]) while len(vps) < numberOfVP: print len(vps) ans, ansDataIndex = -1, -1 for i in xrange(len(datas)): ok = False for j in xrange(len(vps)): if datas[i] == vps[j]: ok = True if ok: continue vps.append(datas[i]) cur = calculateMany(vps) if cur > ans: ans, ansDataIndex = cur, i vps = vps[:-1] vps.append(datas[ansDataIndex]) utils.writeDataToFile( 'vp/vp_%d_%d_%d_%s.txt' % (dim, numberOfVP, cardinality, typeOfVP), vps)
def generateVantagePointsWithPattern(options): numberOfData = options['numberOfData'] dim = options['numberOfDimension'] numberOfVP = options['numberOfVP'] cardinality = options['numberOfAlphabet'] typeOfVP = options['typeOfVP'] datas = utils.getDataInFile(utils.getDataFileName(options)) majorPattern = [[] for i in xrange(numberOfVP)] minorPattern = [[] for i in xrange(numberOfVP)] for j in xrange(dim): d = {} for i in xrange(numberOfData): if datas[i][j] in d: d[datas[i][j]] += 1 else: d[datas[i][j]] = 0 d = sorted(d.items(), key=lambda x: x[1], reverse=True) for k in xrange(numberOfVP): majorPattern[k].append(d[k][0]) minorPattern[k].append(d[-1 - k][0]) utils.writeDataToFile( 'vp/vp_%d_%d_%d_%s.txt' % (dim, numberOfVP, cardinality, 'major'), majorPattern) utils.writeDataToFile( 'vp/vp_%d_%d_%d_%s.txt' % (dim, numberOfVP, cardinality, 'minor'), minorPattern)
def generateVantagePointsWithManyAlgorithm(options): numberOfData = options['numberOfData'] dim = options['numberOfDimension'] numberOfVP = options['numberOfVP'] cardinality = options['numberOfAlphabet'] typeOfVP = options['typeOfVP'] datas = utils.getDataInFile(utils.getDataFileName(options)) vps = [] vps.append(datas[0]) while len(vps) < numberOfVP: print len(vps) ans,ansDataIndex = -1,-1 for i in xrange(len(datas)): ok = False for j in xrange(len(vps)): if datas[i] == vps[j]: ok = True if ok: continue vps.append(datas[i]) cur = calculateMany(vps) if cur > ans: ans,ansDataIndex = cur,i vps = vps[:-1] vps.append(datas[ansDataIndex]) utils.writeDataToFile('vp/vp_%d_%d_%d_%s.txt'%(dim,numberOfVP,cardinality,typeOfVP),vps)
def generateRandomVP(options): numberOfData = options['numberOfData'] dim = options['numberOfDimension'] numberOfVP = options['numberOfVP'] cardinality = options['numberOfAlphabet'] typeOfVP = options['typeOfVP'] datas = utils.getDataInFile(utils.getDataFileName(options)) vps = [] for i in xrange(numberOfVP): vps.append(datas[random.randint(0, numberOfData)]) utils.writeDataToFile( 'vp/vp_%d_%d_%d_%s.txt' % (dim, numberOfVP, cardinality, typeOfVP), vps)
def generateVantagePointsWithManyAlgorithm(options): numberOfData = options['numberOfData'] dim = options['numberOfDimension'] numberOfVP = options['numberOfVP'] cardinality = options['numberOfAlphabet'] typeOfVP = options['typeOfVP'] datas = utils.getDataInFile(utils.getDataFileName(options)) majorPattern = [[] for i in xrange(numberOfVP + 1)] for j in xrange(dim): d = {} for i in xrange(numberOfData): if datas[i][j] in d: d[datas[i][j]] += 1 else: d[datas[i][j]] = 0 d = sorted(d.items(), key=lambda x: x[1], reverse=True) for k in xrange(1): majorPattern[k].append(d[k][0]) vps = [] vps.append(majorPattern[0]) d = [0 for i in xrange(dim + 1)] one_pass = True threshold = 0 while len(vps) < numberOfVP: print len(vps) ans, ansDataIndex = -1, -1 for i in xrange(len(datas)): ok = False for j in xrange(len(vps)): dist = utils.hammingDistance(datas[i], vps[j]) if d[dist] > threshold: ok = True if datas[i] == vps[j]: ok = True if ok: continue for j in xrange(len(vps)): dist = utils.hammingDistance(datas[i], vps[j]) d[dist] += 1 vps.append(datas[i]) threshold += 1 utils.writeDataToFile( 'vp/vp_%d_%d_%d_%s.txt' % (dim, numberOfVP, cardinality, typeOfVP), vps)
def getMajorPattern(): numberOfData = options['numberOfData'] dim = options['numberOfDimension'] numberOfVP = options['numberOfVP'] cardinality = options['numberOfAlphabet'] typeOfVP = options['typeOfVP'] datas = utils.getDataInFile(utils.getDataFileName(options)) rs = [random.randint(0, numberOfData - 1) for i in xrange(100)] majorPattern = '' for j in xrange(dim): d = {} for i in rs: if datas[i][j] in d: d[datas[i][j]] += 1 else: d[datas[i][j]] = 0 d = sorted(d.items(), key=lambda x: x[1], reverse=True) majorPattern += d[0][0] return majorPattern
def generateVantagePointsWithManyAlgorithm(options): numberOfData = options['numberOfData'] dim = options['numberOfDimension'] numberOfVP = options['numberOfVP'] cardinality = options['numberOfAlphabet'] typeOfVP = options['typeOfVP'] datas = utils.getDataInFile(utils.getDataFileName(options)) majorPattern = [[] for i in xrange(numberOfVP + 1)] for j in xrange(dim): d = {} for i in xrange(numberOfData): if datas[i][j] in d: d[datas[i][j]] += 1 else: d[datas[i][j]] = 0 d = sorted(d.items(), key=lambda x: x[1], reverse=True) for k in xrange(1): majorPattern[k].append(d[k][0]) vps = [] vps.append(majorPattern[0]) while len(vps) < numberOfVP: print len(vps) ans, ansDataIndex = -1, -1 for i in xrange(len(datas)): ok = False for j in xrange(len(vps)): if datas[i] == vps[j]: ok = True if ok: continue vps.append(datas[i]) cur = calculateMany(vps) if cur > ans: ans, ansDataIndex = cur, i vps = vps[:-1] vps.append(datas[ansDataIndex]) utils.writeDataToFile( 'vp/vp_%d_%d_%d_%s.txt' % (dim, numberOfVP, cardinality, typeOfVP), vps)
def generateVantagePointsWithPattern(options): numberOfData = options['numberOfData'] dim = options['numberOfDimension'] numberOfVP = options['numberOfVP'] cardinality = options['numberOfAlphabet'] typeOfVP = options['typeOfVP'] datas = utils.getDataInFile(utils.getDataFileName(options)) majorPattern = [ [] for i in xrange(numberOfVP) ] minorPattern = [ [] for i in xrange(numberOfVP) ] for j in xrange(dim): d = {} for i in xrange(numberOfData): if datas[i][j] in d: d[datas[i][j]] += 1 else : d[datas[i][j]] = 0 d = sorted(d.items(), key=lambda x: x[1], reverse=True) for k in xrange(numberOfVP): majorPattern[k].append(d[k][0]) minorPattern[k].append(d[-1-k][0]) utils.writeDataToFile('vp/vp_%d_%d_%d_%s.txt'%(dim,numberOfVP,cardinality,'major'),majorPattern) utils.writeDataToFile('vp/vp_%d_%d_%d_%s.txt'%(dim,numberOfVP,cardinality,'minor'),minorPattern)
#!/usr/bin/python #-*- coding:utf-8 -*- import utils import os import string if __name__ == '__main__': utils.createDirectory('figure') options = utils.getOptions() dataFileName = utils.getDataFileName(options) vpFileName = utils.getVPFileName(options) datas = utils.getDataInFile(dataFileName) vps = utils.readDataFromFile(vpFileName) curDatas = datas for i in xrange(len(vps)): print i n = len(curDatas) x = [[] for j in xrange(len(vps[i]) + 1)] for j in xrange(n): nextPosition = utils.hammingDistance(vps[i], curDatas[j]) x[nextPosition].append(j) mx, position = (0, 0) xp = [] yp = [] for j in xrange(len(vps[i]) + 1): xp.append(j) yp.append(len(x[j])) if mx < len(x[j]): mx, position = (len(x[j]), j)
#!/usr/bin/python #-*- coding:utf-8 -*- import utils import os import string import numpy as np if __name__ == '__main__': utils.createDirectory('figure_pair') options = utils.getOptions() dim = options['numberOfDimension'] dataFileName = utils.getDataFileName(options) vpFileName = utils.getVPFileName(options) datas = utils.getDataInFile(dataFileName) vps = utils.readDataFromFile(vpFileName) for i in xrange(len(vps)): for j in xrange(i+1,len(vps)): cc = utils.calculateCorrelationCoefficient(vps[i],vps[j],datas) cc = abs(cc) imageFileName = utils.getFigurePairName(options,i,j,cc) print imageFileName if os.path.exists(imageFileName): print '%s is exists'%imageFileName continue xp = [] yp = [] zp = [] zcnt = [ [ 0 for ii in xrange(dim+1) ] for jj in xrange(dim+1) ] for k in xrange(len(datas)):
def generateVantagePointsWithHybridAlgorithm(options): numberOfData = options['numberOfData'] dim = options['numberOfDimension'] numberOfVP = options['numberOfVP'] cardinality = options['numberOfAlphabet'] typeOfVP = options['typeOfVP'] datas = utils.getDataInFile(utils.getDataFileName(options)) majorPattern = [[] for i in xrange(numberOfVP + 1)] for j in xrange(dim): d = {} for i in xrange(numberOfData): if datas[i][j] in d: d[datas[i][j]] += 1 else: d[datas[i][j]] = 0 d = sorted(d.items(), key=lambda x: x[1], reverse=True) for k in xrange(1): majorPattern[k].append(d[k][0]) vps = [] vps.append(majorPattern[0]) d = [0 for i in xrange(dim + 1)] one_pass = False while len(vps) < numberOfVP: print len(vps) ans, ansDataIndex = -1, -1 if one_pass: for i in xrange(len(datas)): ok = False for j in xrange(len(vps)): dist = utils.hammingDistance(datas[i], vps[j]) if d[dist] > 1: ok = True if datas[i] == vps[j]: ok = True if ok: continue for j in xrange(len(vps)): dist = utils.hammingDistance(datas[i], vps[j]) d[dist] += 1 vps.append(datas[i]) one_pass = False else: change = False for i in xrange(dim + 1): if d[i] == 0: change = True ans, ans_vp = -1, '' fx = 987654321 for j in xrange(len(vps)): cur_vp = generateVpWithDist(dim, cardinality, vps[j], i) vps.append(cur_vp) cur, dists = calculateMany(vps) if cur > ans: ans, ans_vp = cur, cur_vp fx = max(dists) elif cur == ans: if max(dists) < fx: ans, ans_vp = cur, cur_vp fx = max(dists) vps = vps[:-1] for j in xrange(len(vps)): dist = utils.hammingDistance(vps[j], ans_vp) d[dist] += 1 vps.append(ans_vp) break if not change: vps.append(datas[random.randrange(0, numberOfData)]) utils.writeDataToFile( 'vp/vp_%d_%d_%d_%s.txt' % (dim, numberOfVP, cardinality, typeOfVP), vps)
def generateVantagePointsWithManyAlgorithm(options): numberOfData = options['numberOfData'] dim = options['numberOfDimension'] numberOfVP = options['numberOfVP'] cardinality = options['numberOfAlphabet'] typeOfVP = options['typeOfVP'] datas = utils.getDataInFile(utils.getDataFileName(options)) threshold = 2 majorPattern = [] for j in xrange(dim): d = {} for i in xrange(numberOfData): if datas[i][j] in d: d[datas[i][j]] += 1 else: d[datas[i][j]] = 0 d = sorted(d.items(), key=lambda x: x[1], reverse=True) majorPattern.append(d[0][0]) vps = [] vps.append(majorPattern) d = [0 for i in xrange(dim + 1)] isSelected = [False for i in xrange(len(datas))] for i in xrange(len(datas)): if datas[i] == majorPattern: isSelected[i] = True notChangedCount = 0 while len(vps) < numberOfVP: print len(vps) changed = False for i in xrange(len(datas)): if isSelected[i]: continue is_pass = False for j in xrange(len(vps)): if datas[i] == vps[j]: is_pass = True dist = utils.hammingDistance(datas[i], vps[j]) if d[dist] > threshold: is_pass = True if is_pass: continue for j in xrange(len(vps)): dist = utils.hammingDistance(datas[i], vps[j]) d[dist] += 1 vps.append(datas[i]) isSelected[i] = True changed = True if not changed: print 'not changed so pop worst (%d)' % notChangedCount worstIdx = getWorstVP(vps) for j in xrange(len(vps)): if j == worstIdx: continue dist = utils.hammingDistance(vps[j], vps[worstIdx]) d[dist] -= 1 nextVPS = popDataAtIndex(vps, worstIdx) vps = nextVPS notChangedCount += 1 if notChangedCount > numberOfVP / 2: notChangedCount = 0 for k in xrange(notChangedCount - 1): worstIdx = getWorstVP(vps) for j in xrange(len(vps)): if j == worstIdx: continue dist = utils.hammingDistance(vps[j], vps[worstIdx]) d[dist] -= 1 nextVPS = popDataAtIndex(vps, worstIdx) vps = nextVPS print len(vps) print d