def tsne(data, featureDict, x, prop): """t-SNE methods Args: data (TYPE): Description x (TYPE): Description queryrate (TYPE): Description plotsize (TYPE): Description Returns: TYPE: Description """ x = 'tsne-%s' % x print "Computing t-SNE embedding" t0 = time.clock() X = np.array(data['data']) model = TSNE(n_components=2, random_state=0) np.set_printoptions(suppress=True) # list, each of them is formatted as (x,y) Y = model.fit_transform(X) print "t-SNE embedding of the digits (time %.2fs)" % (time.clock() - t0) func.matrixtofile( Y, '%s/PointsPosition-1-in-%s-%s.csv' % (prop['dic'], str(prop['queryrate']), str(x))) result = {'data': Y, 'id': data['id']} prop['text'] = x drawFigure(result, featureDict, prop)
def pca(data, featureDict, x, prop): """PCA methods Args: data (TYPE): Description x (TYPE): Description queryrate (TYPE): Description plotsize (TYPE): Description Returns: TYPE: Description """ x = 'PCA-%s' % x print("Computing PCA projection") t0 = time.clock() pca = PCA(n_components=2) X_pca = pca.fit_transform(data['data']) print "Principal Components projection of the digits (time %.2fs)" % ( time.clock() - t0) func.matrixtofile( X_pca, '%s/PointsPosition-1-in-%s-%s.csv' % (prop['dic'], str(prop['queryrate']), str(x))) result = {'data': X_pca, 'id': data['id']} prop['text'] = x drawFigure(result, featureDict, prop)
def mds(data, featureDict, x, prop): x = 'MDS-%s' % x print "Computing MDS embedding" t0 = time.clock() clf = MDS(n_components=2, n_init=1, max_iter=100) X_mds = clf.fit_transform(data['data']) print("Done. Stress: %f" % clf.stress_) print "MDS embedding of the digits (time %.2fs)" % (time.clock() - t0) func.matrixtofile( X_mds, '%s/PointsPosition-1-in-%s-%s.csv' % (prop['dic'], str(prop['queryrate']), str(x))) result = {'data': X_mds, 'id': data['id']} prop['text'] = x drawFigure(result, featureDict, prop)
def drawFigure(data, featureDict, prop): """Figures' drawing and saving Args: data (list): Dots list plotsize (TYPE): Description queryrate (TYPE): Description Returns: TYPE: Description """ # Init transformation plotsize, queryrate, fthre = prop['plotsize'], str(prop['queryrate']), str( prop['text']) # matrixData 用于存储降维后点值的二维位置与对应 ID 信息 matrixDataRaw = np.asarray(np.array(data['data'])[:, 0:2]) matrixDataRes = [] # 相似度对应的 colormap 取值表 simcolormap = { '4': '#1924B1', '5': '#37B6CE', '6': '#25D500', '7': '#FFC700', '8': '#FF8E00', '9': '#FF1300' } # Scatter plot X, Y = data['data'][:, 0], data['data'][:, 1] whlC, gt11C, numC = [], [], [] for x in xrange(0, len(data['id'])): whlSimVal = int( math.floor(featureDict[str(data['id'][x])]['whlsim'] * 10)) gt11SimVal = int( math.floor(featureDict[str(data['id'][x])]['gt11sim'] * 10)) whlC.append(simcolormap[str(whlSimVal)]) gt11C.append(simcolormap[str(gt11SimVal)]) totalNum = featureDict[str(data['id'][x])]['totalNum'] numC.append(func.calColorbyNum(int(totalNum))) matrixDataRes.append([ data['id'][x], matrixDataRaw[x][0], matrixDataRaw[x][1], totalNum, whlSimVal, gt11SimVal ]) textRecNum = '2D-ScatterData_1-in-%s_%s(byRecNum)' % (queryrate, fthre) textAveSim = '2D-ScatterData_1-in-%s_%s(byAveSim)' % (queryrate, fthre) func.matrixtofile( matrixDataRes, '%s/2D-ScatterData_1-in-%s_%s.csv' % (prop['dic'], queryrate, fthre)) scatterTC = TimeConsuming(textRecNum) plt.figure() plt.title(textRecNum) plt.scatter(X, Y, s=plotsize, c=numC, lw=0) classes = ['5', '10', '200', '800', '2000', '4000', '8500'] class_colours = [ '#000000', '#1924B1', '#37B6CE', '#25D500', '#FFC700', '#FF8E00', '#FF1300' ] recs = [] for i in range(0, len(class_colours)): recs.append(mpatches.Rectangle((0, 0), 1, 1, fc=class_colours[i])) plt.legend(recs, classes, scatterpoints=1, loc='lower left', ncol=4, fontsize=5) img = plt.gcf() img.savefig('%s/%s.png' % (prop['imgdic'], textRecNum), dpi=400) plt.close() scatterTC.end() scatterTC2 = TimeConsuming(textAveSim) plt.figure() plt.title(textAveSim) plt.scatter(X, Y, s=plotsize, c=whlC, lw=0) whlClasses = [float(x) / 10 for x in simcolormap] whlClassColours = [simcolormap[x] for x in simcolormap] whlRecs = [] for i in range(0, len(whlClassColours)): whlRecs.append(mpatches.Rectangle((0, 0), 1, 1, fc=whlClassColours[i])) plt.legend(whlRecs, whlClasses, scatterpoints=1, loc='lower left', ncol=3, fontsize=5) img2 = plt.gcf() img2.savefig('%s/%s.png' % (prop['imgdic'], textAveSim), dpi=400) plt.close() scatterTC2.end()