Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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()