def __init__(self, raw_data : pd.DataFrame, n_clusters : int) -> None: """Initialize the object. Arguments: raw_data -- pandas DataFrame with timestamp as index. n_clusters -- number of clusters to be used in clustering. """ self.graph = StateGraph(n_clusters) self.data = self.graph.fit_transform(raw_data) self.norm_data = pd.DataFrame( data=self.graph.normalisation.transform(raw_data), index=raw_data.index, columns=raw_data.columns) self.labels = np.array([self.data["label"].to_numpy()]).T
class Visualization(): """ Maintains information of a single dataset and provides methods for its visualization. """ def __init__(self, raw_data: pd.DataFrame, n_clusters: int) -> None: """Initialize the object. Arguments: raw_data -- pandas DataFrame with timestamp as index. n_clusters -- number of clusters to be used in clustering. """ self.graph = StateGraph(n_clusters) data = self.graph.fit_transform(raw_data) self.norm_data = pd.DataFrame( data=self.graph.normalisation.transform(raw_data), index=raw_data.index, columns=raw_data.columns) self.labels = np.array([data["label"].to_numpy()]).T def get_parallel_plot(self) -> go.Figure: """Returns a Figure containing the parallel plot of clusters' centroids. """ fig = px.parallel_coordinates(self.graph.centroids, color=self.graph.centroids.index, dimensions=self.graph.centroids.columns) return fig def get_PCA(self) -> go.Figure: """Returns a Figure containing a PCA plot of clustered data.""" pca = PCA(n_components=2) pca_result = pca.fit_transform(self.norm_data) plot_data = pd.DataFrame(np.concatenate((pca_result, self.labels), axis=1), columns=["pca_x", "pca_y", "cluster"]) return px.scatter(plot_data, x="pca_x", y="pca_y", color="cluster") def get_TSNE(self, perplexity: int = 100, n_iter: int = 3000) -> go.Figure: """Returns a Figure containing a TSNE plot of clustered data. Function arguments correspond to standard TSNE arguments. """ tsne = TSNE(n_components=2, verbose=1, perplexity=perplexity, n_iter=n_iter) tsne_result = tsne.fit_transform(self.norm_data) plot_data = pd.DataFrame(np.concatenate((tsne_result, self.labels), axis=1), columns=["tsne_x", "tsne_y", "cluster"]) return px.scatter(plot_data, x="tsne_x", y="tsne_y", color="cluster")
def get_all_graphs_infos(cls): for (_, _, filenames) in os.walk(FOLDER_GRAPH): for filename in filenames: if '.gz' in filename: graph_name = filename.replace('.gz', '') # Remove .gz extension. domain_name = filename.split('-', 1)[0] options_list = [ '--domain', domain_name, '--graph', graph_name ] exp_params = ExpParams.get_exp_params(options_list) g = StateGraph.load(exp_params) g.print_stats() break
def create_back_range(cls, exp_params): g = StateGraph.load(exp_params) g.compute_bfs() # prob_keep_range = [1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1, 0.0] prob_keep_range = [x / 100.0 for x in EXP_BACK_RANGE] prob_keep_range_inc = [] currently_kept = 1.0 for p in prob_keep_range: must_keep_inc = p / currently_kept prob_keep_range_inc.append(must_keep_inc) currently_kept = p # print 'Going to trim back edges by these percentages:' # print prob_keep_range_inc for i in range(len(prob_keep_range)): # pylint: disable=consider-using-enumerate filename_suffix = '-back-%d' % (prob_keep_range[i] * 100) g.trim_back_edges(prob_keep_range_inc[i]) g.save(exp_params, filename_suffix) print ''
class Visualization(): """ Maintains information of a single dataset and provides methods for its visualization. """ def __init__(self, raw_data : pd.DataFrame, n_clusters : int) -> None: """Initialize the object. Arguments: raw_data -- pandas DataFrame with timestamp as index. n_clusters -- number of clusters to be used in clustering. """ self.graph = StateGraph(n_clusters) self.data = self.graph.fit_transform(raw_data) self.norm_data = pd.DataFrame( data=self.graph.normalisation.transform(raw_data), index=raw_data.index, columns=raw_data.columns) self.labels = np.array([self.data["label"].to_numpy()]).T def get_parallel_plot(self) -> go.Figure: """Returns a Figure containing the parallel plot of clusters' centroids. """ fig = px.parallel_coordinates( self.graph.centroids, color=self.graph.centroids.index, dimensions=self.graph.centroids.columns ) return fig def get_PCA(self) -> go.Figure: """Returns a Figure containing a PCA plot of clustered data.""" pca = PCA(n_components=2) pca_result = pca.fit_transform(self.norm_data) plot_data = pd.DataFrame( np.concatenate((pca_result,self.labels),axis=1), columns=["pca_x","pca_y","cluster"]) return px.scatter(plot_data,x="pca_x",y="pca_y",color="cluster") def get_TSNE(self, perplexity : int = 100, n_iter : int = 3000) -> go.Figure: """Returns a Figure containing a TSNE plot of clustered data. Function arguments correspond to standard TSNE arguments. """ tsne = TSNE(n_components=2, verbose=1, perplexity=perplexity, n_iter=n_iter) tsne_result = tsne.fit_transform(self.norm_data) plot_data = pd.DataFrame( np.concatenate((tsne_result,self.labels),axis=1), columns=["tsne_x","tsne_y","cluster"]) return px.scatter(plot_data,x="tsne_x",y="tsne_y",color="cluster") def get_histograms(self,cluster : int) -> go.Figure: """Returns a figure containing a histogram for each sensor for the data in a given cluster (cluster index starts at 0). """ if cluster not in self.labels.flatten(): raise ValueError(f"cluster must be between 0 and {np.amax(self.labels)}") filtered = self.data[self.data["label"] == cluster] cols = filtered.columns.values[:-1] fig = make_subplots(rows=len(cols)//2,cols=2,subplot_titles=cols) for index, sensor in enumerate(cols): x = filtered[sensor].values fig.append_trace( go.Histogram(x=x, name=sensor), row=index//2+1, col=index%2+1 ) fig.update_xaxes(title_text=sensor, row=index//2+1, col=index%2+1) fig.update_yaxes(title_text="Count", row=index//2+1, col=index%2+1) fig.update_layout(autosize=False,width=1500,height=200*len(cols), showlegend=False) return fig
from sys import stdin, argv from os import system, name from state_graph import StateGraph from maze import Maze def clear_screen(): if name == 'posix': system('clear') else: system('cls') try: with open(argv[1], 'r') as file: graph = StateGraph(file.read()) except: print("Falha ao ler o arquivo, verifique o formato passado") exit() clear_screen() print("Escolha um dos algoritmos disponíveis:") print("1 - A*") print("2 - Busca em Aprofundamento Iterativo") try: while True: inp = input() if inp == '1': path, cost = graph.astar()
# print prob_keep_range_inc for i in range(len(prob_keep_range)): # pylint: disable=consider-using-enumerate filename_suffix = '-back-%d' % (prob_keep_range[i] * 100) g.trim_back_edges(prob_keep_range_inc[i]) g.save(exp_params, filename_suffix) print '' @classmethod def get_all_graphs_infos(cls): for (_, _, filenames) in os.walk(FOLDER_GRAPH): for filename in filenames: if '.gz' in filename: graph_name = filename.replace('.gz', '') # Remove .gz extension. domain_name = filename.split('-', 1)[0] options_list = [ '--domain', domain_name, '--graph', graph_name ] exp_params = ExpParams.get_exp_params(options_list) g = StateGraph.load(exp_params) g.print_stats() break if __name__ == '__main__': exp_params = ExpParams.get_exp_params_from_command_line_args() StateGraph.print_graph_info(exp_params) # ManipGraph.create_back_range(exp_params) # ManipGraph.get_all_graphs_infos()
s = item[1] k_score = self.compute_k_neighbours_fittness( s, self.recent_restores_size) if s.fitness_score > highest_score: fittest_node = s highest_score = s.fitness_score print s.uid + " k_neighbour_fitness: " + str(s) return fittest_node.uid # Some tests if __name__ == '__main__': # Initial case -> empty graph = StateGraph() graph.add_node('1') node = graph.retrieve('1') node.fitness_score = 100 graph.dump() strategy = CircularRestoreStrategy(graph, 3) print strategy.get_fittest_state() # expected state 1 print strategy print strategy.get_fittest_state() # expected state 1 print strategy # Building up, graph has less states than size of queue graph.add_node('2') node = graph.retrieve('2') node.fitness_score = 90