예제 #1
0
def plot_weights(model_data):

    category_list = model_data[0][0]
    feature_list = model_data[0][1]
    hidden_size = model_data[1][2]
    h_x = model_data[2][0]
    y_h = model_data[2][1]

    h_labels = ['H0']
    for i in range(hidden_size):
        h_labels.append("H" + str(i + 1))

    h1 = heatmapcluster.heatmapcluster(y_h.transpose(),
                                       h_labels,
                                       category_list,
                                       label_fontsize=12,
                                       xlabel_rotation=0,
                                       cmap=plt.cm.coolwarm,
                                       show_colorbar=True,
                                       colorbar_pad=2,
                                       top_dendrogram=True)

    h2 = heatmapcluster.heatmapcluster(h_x,
                                       h_labels,
                                       feature_list,
                                       label_fontsize=12,
                                       xlabel_rotation=90,
                                       cmap=plt.cm.coolwarm,
                                       show_colorbar=True,
                                       colorbar_pad=2,
                                       top_dendrogram=True)
예제 #2
0
def plot_hierarchical_cluster(the_dataset, svd, similarity):

    print("\n    Plotting Hierarchical Cluster Diagram")
    ok_to_go = False

    try:
        import heatmapcluster
        ok_to_go = True
    except:
        print(
            "Cannot import heatmapcluster. try running 'pip3 install heatmapcluster'"
        )

    if svd:
        if the_dataset.svd_dimensions is None:
            print(
                "ERROR: Cannot make SVD heat map without specifying SVD dimensions"
            )
            sys.exit()
        else:
            data_matrix = the_dataset.svd_row_features[:, :the_dataset.
                                                       svd_dimensions]
    else:
        data_matrix = the_dataset.feature_matrix

    if ok_to_go:
        y_labels = the_dataset.word_list

        if similarity is not None:
            x_labels = the_dataset.word_list
            data = np.zeros([the_dataset.num_words, the_dataset.num_words])
            for i in range(the_dataset.num_words):
                a = the_dataset.feature_matrix[i, :]
                for j in range(the_dataset.num_words):
                    b = the_dataset.feature_matrix[j, :]
                    data[i, j] = np.dot(
                        a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
        else:
            x_labels = the_dataset.feature_list
            data = data_matrix

        print(data_matrix.shape)
        h = heatmapcluster.heatmapcluster(data,
                                          y_labels,
                                          x_labels,
                                          label_fontsize=6,
                                          xlabel_rotation=90,
                                          cmap=plt.cm.coolwarm,
                                          show_colorbar=True,
                                          colorbar_pad=2,
                                          top_dendrogram=True)
    plt.show()
예제 #3
0
def calcCorMatrix(m, fn):
    cor = [[0 for x in xrange(len(m))] for y in xrange(len(m))]

    for i in xrange(len(m)):
        for j in xrange(len(m)):
            if m[i][0] != None and m[j][0] != None:
                cor[i][j] = pearsonr(m[i], m[j])[0]
            else:
                cor[i][j] = None
    fn = fn + ".csv"
    f = open(fn, 'w')

    strcor = str(cor)[1:-1].replace("], ", "\n").replace("[",
                                                         "").replace("]", "")

    f.write(strcor)
    f.close()

    sp = ["MR", "R", "R2", "O", "I", "I2R2", "MY", "Y", "YIex"]
    ch = ["dPK", "dPKT", "dHRT", "dHFT"]

    names = list()
    for x in xrange(len(sp)):
        for y in xrange(len(ch)):
            names.append(sp[x] + ' ' + ch[y])
    names.remove("MR dPKT")
    names.remove("MR dHRT")
    print(names)
    # names = list(reversed(names))

    data = np.genfromtxt(fn, delimiter=",")

    clustersize = 12
    h = heatmapcluster(data,
                       names,
                       names,
                       num_row_clusters=clustersize,
                       num_col_clusters=clustersize,
                       label_fontsize=9,
                       xlabel_rotation=-75,
                       cmap=plt.cm.coolwarm,
                       show_colorbar=True,
                       top_dendrogram=True)
    plt.savefig("cor_heatmap.png")
예제 #4
0
    def plot_weight_heat_map(self):
        ok_to_go = False
        try:
            import heatmapcluster
            ok_to_go = True
        except:
            print(
                "Cannot import heatmapcluster. try running 'pip install heatmapcluster'"
            )

        if ok_to_go:
            h = heatmapcluster.heatmapcluster(self.y_x_weights.transpose(),
                                              self.dataset.feature_list,
                                              self.dataset.category_list,
                                              label_fontsize=12,
                                              xlabel_rotation=0,
                                              cmap=plt.cm.coolwarm,
                                              show_colorbar=True,
                                              colorbar_pad=2,
                                              top_dendrogram=True)
예제 #5
0
    def plot_hierarchical_cluster(self, similarity=False):
        print("\n    Plotting Hierarchical Cluster Diagram")
        ok_to_go = False
        try:
            import heatmapcluster
            ok_to_go = True
        except:
            print(
                "Cannot import heatmapcluster. try running 'pip install heatmapcluster'"
            )

        if ok_to_go:
            x_labels = self.word_list
            y_labels = self.word_list
            if similarity:
                data = np.zeros([self.num_words, self.num_words])
                for i in range(self.num_words):
                    a = self.feature_matrix[i, :]
                    for j in range(self.num_words):
                        b = self.feature_matrix[j, :]
                        data[i, j] = np.dot(
                            a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

            else:
                data = self.feature_matrix.transpose()
                x_labels = self.word_list
                y_labels = self.feature_list

            h = heatmapcluster.heatmapcluster(data,
                                              y_labels,
                                              x_labels,
                                              label_fontsize=6,
                                              xlabel_rotation=90,
                                              cmap=plt.cm.coolwarm,
                                              show_colorbar=True,
                                              colorbar_pad=2,
                                              top_dendrogram=True)
예제 #6
0
    if seed is not None:
        np.random.seed(seed)

    s = np.random.gamma([7, 6, 5], [6, 8, 6], size=(size[1], 3)).T
    i = np.random.choice(range(len(s)), size=size[0])
    x = s[i]

    t = np.random.gamma([8, 5, 6], [3, 3, 2.1], size=(size[0], 3)).T
    j = np.random.choice(range(len(t)), size=size[1])

    x += 1.1*t[j].T

    x += 2*np.random.randn(*size)

    row_labels = [('R%02d' % k) for k in range(x.shape[0])]
    col_labels = [('C%02d' % k) for k in range(x.shape[1])]

    return x, row_labels, col_labels


x, row_labels, col_labels = make_data(size=(64, 48), seed=123)

h = heatmapcluster(x, row_labels, col_labels,
                   num_row_clusters=3, num_col_clusters=0,
                   label_fontsize=6,
                   xlabel_rotation=-75,
                   cmap=plt.cm.coolwarm,
                   show_colorbar=True,
                   top_dendrogram=True)
plt.show()
def main(argv):

   try:
       opts, args = getopt.getopt(argv, "", ["file="])
   except getopt.GetoptError:
       raise NameError("Invalid arguments. Call string should look like:\nportfolio_heatmap.py --file <path-to-folder>")
   for opt, arg in opts:
       if opt in ("--file"):
           file = arg
       else:
           print ("Option " + opt + " is not recognized")
           print ("permutation_folds.py --data-file <path-to-file> --outputdir <path-to-output-dir> --seed_range <begin,end>")
           sys.exit(2)
   maxValue=10000  #Cutoff??
   with open(file, 'rU') as csvfile:
    lines = csv.DictReader(csvfile)
    values = []
    vbsValues = []
    for line in lines:
        row = []
        vbsRow = []
        minPerformance = 100000000
        bestSolver = ''     
        for col in line:
            if (float(line[col]) < minPerformance):
                minPerformance = float(line[col])
                bestSolver = col
            row.append(float(line[col]))
        for col in line:
            if col == bestSolver:
                vbsRow.append(line[bestSolver])
            else:
                vbsRow.append(maxValue)    
        vbsValues.append(vbsRow)    
        values.append(row)
   x_labels = list(xrange(len(values)))
   y_labels = list(xrange(len(values[0])))
   # Maybe you want to normalize each row???
   
   '''
   log_transform = False
   if log_transform:
       mypyutils.pyplot.plotHeatMap(values,x_labels, y_labels,colormap=plt.cm.get_cmap('RdBu'),norm=matplotlib.colors.LogNorm())
   else:
       mypyutils.pyplot.plotHeatMap(values,x_labels, y_labels,colormap=plt.cm.get_cmap('RdBu'))

   plt.xlabel("Hydra Iterations")
   plt.ylabel("Instances")
   plt.title("Hydra Portfolio Performance Heatmap")
   ax = plt.gca()
   cbar = plt.colorbar(orientation='vertical',pad=0.025,shrink=0.75,fraction=0.05)
   cbar.set_label('Performance', rotation=270,labelpad=15)
   cbar.ax.set_aspect(20)
   plt.show()
   
   plt.clf()
   log_transform = False
   if log_transform:
       mypyutils.pyplot.plotHeatMap(vbsValues,x_labels, y_labels,colormap=plt.cm.get_cmap('RdBu'),norm=matplotlib.colors.LogNorm())
   else:
       mypyutils.pyplot.plotHeatMap(vbsValues,x_labels, y_labels,colormap=plt.cm.get_cmap('RdBu'))
   plt.xlabel("Hydra Iterations")
   plt.ylabel("Instances")
   plt.title("Hydra Portfolio Performance Heatmap")
   ax = plt.gca()
   cbar = plt.colorbar(orientation='vertical',pad=0.025,shrink=0.75,fraction=0.05)
   cbar.set_label('Performance', rotation=270,labelpad=15)
   cbar.ax.set_aspect(20)
   '''
   np_values = np.array(values) 
   h = heatmapcluster(np_values, x_labels, y_labels,
                   num_row_clusters=3, num_col_clusters=0,
                   label_fontsize=6,
                   xlabel_rotation=-75,
                   cmap=plt.cm.coolwarm,
                   show_colorbar=True,
                   top_dendrogram=False)

   plt.show()
   '''
    j = np.random.choice(range(len(t)), size=size[1])

    x += 1.1 * t[j].T

    x += 2 * np.random.randn(*size)

    row_labels = [('R%02d' % k) for k in range(x.shape[0])]
    col_labels = [('C%02d' % k) for k in range(x.shape[1])]

    return x, row_labels, col_labels


x, row_labels, col_labels = make_data(size=(64, 48), seed=123)

h = heatmapcluster(
    x,
    row_labels,
    col_labels,
    num_row_clusters=3,
    num_col_clusters=0,
    label_fontsize=6,
    xlabel_rotation=-75,
    cmap=plt.cm.coolwarm,
    show_colorbar=True,
    top_dendrogram=True,
    row_linkage=lambda x: linkage(x, method='average', metric='correlation'),
    col_linkage=lambda x: linkage(x.T, method='average', metric='correlation'),
    histogram=True)

plt.show()
    t = np.random.gamma([8, 5, 6], [3, 3, 2.1], size=(size[0], 3)).T
    j = np.random.choice(range(len(t)), size=size[1])

    x += 1.1*t[j].T

    x += 2*np.random.randn(*size)

    row_labels = [('R%02d' % k) for k in range(x.shape[0])]
    col_labels = [('C%02d' % k) for k in range(x.shape[1])]

    return x, row_labels, col_labels


x, row_labels, col_labels = make_data(size=(64, 48), seed=123)

h = heatmapcluster(x, row_labels, col_labels,
                   num_row_clusters=3, num_col_clusters=0,
                   label_fontsize=6,
                   xlabel_rotation=-75,
                   cmap=plt.cm.coolwarm,
                   show_colorbar=True,
                   top_dendrogram=True,
                   row_linkage=lambda x: linkage(x, method='average',
                                                 metric='correlation'),
                   col_linkage=lambda x: linkage(x.T, method='average',
                                                 metric='correlation'),
                   histogram=True)

plt.show()