File size: 2,547 Bytes
7e70cfa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9bbc2d5
7e70cfa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt
import numpy as np

# Latent Feature Cluster for Training Data using T-SNE
def TSNE_reduction(latent_points, perplexity=30, learning_rate=20):
    latent_dimensionality = len(latent_points[0])
    model = TSNE(n_components=2, random_state=0, perplexity=perplexity,
                 learning_rate=learning_rate)  # Perplexity(5-50) | learning_rate(10-1000)
    embedding = model
    # configuring the parameters
    # the number of components = dimension of the embedded space
    # default perplexity = 30 " Perplexity balances the attention t-SNE gives to local and global aspects of the data.
    # It is roughly a guess of the number of close neighbors each point has. ..a denser dataset ... requires higher perplexity value"
    # default learning rate = 200 "If the learning rate is too high, the data may look like a ‘ball’ with any point
    # approximately equidistant from its nearest neighbours. If the learning rate is too low,
    # most points may look compressed in a dense cloud with few outliers."
    tsne_data = model.fit_transform(
        latent_points)  # When there are more data points, trainX should be the first couple hundred points so TSNE doesn't take too long
    x = tsne_data[:, 0]
    y = tsne_data[:, 1]
    title = ("T-SNE of Data")
    return x, y, title, embedding


########################################################################################################################
import pandas as pd
import json

"""
df = pd.read_csv('2D_Lattice.csv')
row = 0
box = df.iloc[row,1]
array = np.array(json.loads(box))

# For plotting CSV data
# define a function to flatten a box
def flatten_box(box_str):
    box = json.loads(box_str)
    return np.array(box).flatten()


# apply the flatten_box function to each row of the dataframe and create a list of flattened arrays
flattened_arrays = df['Array'].apply(flatten_box).tolist()


x, y, title, embedding = TSNE_reduction(flattened_arrays)

plt.scatter(x,y)
plt.title(title)
plt.show()
"""

# def plot_dimensionality_reduction(x, y, label_set, title):
#     plt.title(title)
#     if label_set[0].dtype == float:
#         plt.scatter(x, y, c=label_set)
#         plt.colorbar()
#         print("using scatter")
#     else:
#         for label in set(label_set):
#             cond = np.where(np.array(label_set) == str(label))
#             plt.plot(x[cond], y[cond], marker='o', linestyle='none', label=label)
#
#         plt.legend(numpoints=1)
#
#     plt.show()
#     plt.close()