def find_similar(self, data, num_similar=5, return_distance=False): data = format_data(data) check_data(data) X = self.transform(data) dist, ind = self.knn.kneighbors(X=X, n_neighbors=num_similar, return_distance=True) if return_distance: return ind, dist return ind
def fit_transform(self, data, patient_ids=None): data = format_data(data) check_data(data) X = pad(data) X = self.model.predict(X) X = X.reshape(-1, X.shape[-1]) if patient_ids is None: patient_ids = np.arange(len(data)) self.patient_ids = {i: patient_ids[patientint(i / SEQ_LENGTH)] for i in range(len(X))} self.patient_offsets = {i: patient_ids[patientint(i % SEQ_LENGTH)] for i in range(len(X))} self._fit_X = X self._fit_pca_X = self.pca.fit_transform(X) self.knn.fit(self._fit_pca_X)
if args.freq: if not args.load or not model: print( "No model loaded. Please load a model with --load or -l before doing frequency analysis." ) exit() magnitudes = [] for i in range(3, 6): for j in range(1, 10): frequency = j * 10**i print("Frequency: " + str(j) + "x10^" + str(i)) data_obj_test = create_freq_data(frequency) (x_test, y_test) = format_data(data_obj_test, args.timesteps) magnitudes.append( compute_magnitude(model, x_test, data_obj_test, args.batch_size, frequency, model_name, args.plot)) print("\n") print("-- Low Pass Magnitudes --") for mag in magnitudes: print(mag[0]) print("\n") print("-- Network Magnitudes --") for mag in magnitudes: print(mag[1])
from model import load_model from data import create_data, format_data import matplotlib.pyplot as plt import numpy as np data_obj_test = create_data("OOK", "LPF") (x_test, y_test) = format_data(data_obj_test, 32) fig, axs = plt.subplots(8, 1) model = load_model("CNN3232") output = model.predict(x_test, batch_size=32) axs[0].plot(output, label="CNN3232") plt.show()
X = self.model.predict(X) X = X.reshape(-1, X.shape[-1]) if patient_ids is None: patient_ids = np.arange(len(data)) self.patient_ids = {i: patient_ids[patientint(i / SEQ_LENGTH)] for i in range(len(X))} self.patient_offsets = {i: patient_ids[patientint(i % SEQ_LENGTH)] for i in range(len(X))} self._fit_X = X self._fit_pca_X = self.pca.fit_transform(X) self.knn.fit(self._fit_pca_X) def transform(self, data) data = format_data(data) check_data(data) assert self.pca is not None and self.knn is not None, 'Must call function "fit_transform" before using "transform"' ends = np.clip([len(array) for array in data], 0, SEQ_LENGTH - 1) X = pad(data) X = self.model.predict(X) X = X[np.arange(len(X)), ends] return self.pca.transform(X) def find_similar(self, data, num_similar=5, return_distance=False): data = format_data(data) check_data(data)
def generate_graphs(weighing_method='RS'): ''' Generate all the graphs and associated layout based on the provided weighing method, RS if none is provided ''' # Try if the default files are located in the root dir, otherwise initiate with example data try: csv_data = pd.read_csv('input_data.csv') with open('input_data_labels.json') as input_data_labels_file: input_data_labels = json.load(input_data_labels_file) csv_labels = input_data_labels['csv_labels'] csv_type = input_data_labels['csv_type'] attributes = format_data(csv_data, csv_labels, csv_type, weighing_method) except: attributes = format_data() # Generate pie char for weights with header weights_labels = [k for k, v in attributes.items()] weights_values = [v['weight'] for k, v in attributes.items()] weights_fig = go.Figure(data=[ go.Pie(labels=weights_labels, values=weights_values, textinfo='label+percent', insidetextorientation='radial') ], layout_margin=dict(l=50, r=50, t=50, b=50), layout_showlegend=False) # weights_fig.write_image('images/Ranks.eps') weights_graph = [ html.Div(children=[ html.H1(children='Weights', style={'textAlign': 'center'}), dcc.Dropdown(options=[{ 'label': 'RS - Rank Sum', 'value': 'RS' }, { 'label': 'ROC - Rank Order Centroid', 'value': 'ROC' }], value=weighing_method, id='weights-selector'), dcc.Graph(figure=weights_fig, id='weights-graph') ]) ] # Generate Dash graphs from figures for each attribute, with title in a <div> attribute_graphs = [ graph_element(key, attribute) for key, attribute in attributes.items() ] # Generate overall title and attributes title title = [ html.H1(children='SMARTER Preference Elicitation Analysis Tool', style={'textAlign': 'center'}), html.Hr() ] title_attributes = [ html.Hr(), html.H1(children='Attributes', style={'textAlign': 'center'}) ] graphs = title + weights_graph + title_attributes + attribute_graphs return graphs