return np.array(delta_W_ext) * -self.learning_rate def predict(self, X): X = self.data_normalizer.transform(X) return self.predict_(X) def predict_(self, X): O_s = self.get_O_s(X) results = O_s[-1] return self.unique_labels[results.argmax(1)] def plot_accuracies(self, file_name=None): plt.figure(figsize=(12, 7)) plt.plot(self.history) plt.xlabel("Iterations") plt.ylabel("accuracy") if file_name is None: plt.show() else: plt.savefig(file_name) X_train, X_test, y_train, y_test = get_data_set('digits.data') nn = NeuralNetwork() nn.fit(X_train, y_train) nn.plot_accuracies('./2_hidden_layers_20_15_with_7_batches.png') print('Score train: {}'.format(nn.score(X_train, y_train))) print('Score: {}'.format(nn.score(X_test, y_test)))
# best_seed = 0 # worst_seed = 0 # for i in range(1000): # X_train, X_test, y_train, y_test = get_data_set(i) # classifier = FisherClassifier(X_train, y_train) # score = classifier.score(X_test, y_test) # if score > max_score: # max_score = score # best_seed = i # if score < min_score: # min_score = score # worst_seed = i # # print('Best score for seed={}: {}'.format(best_seed, max_score)) # print('Worst score for seed{}: {}'.format(worst_seed, min_score)) X_train, X_test, y_train, y_test = get_data_set(879) classifier = FisherClassifier(X_train, y_train) score = classifier.score(X_test, y_test) print('Score: {}'.format(classifier.score(X_test, y_test))) lm = LinearRegression() y_train_modified = list(map(lambda x: 1 if x == 1 else -1, y_train)) lm.fit(X_train, y_train_modified) prediction = np.array(list(map(lambda x: 1 if x > 0 else 0, lm.predict(X_test))), dtype=np.float64) score = np.mean(prediction == np.array(y_test, dtype=np.float64)) print('Score with linear regression: {}'.format(score))