def main(): data = Data() logistic_regression = models.LogisticRegression() neural_network = models.NeuralNet() svm = models.SupportVectorMachine(C=1.0, kernel='rbf', gamma='scale') random_forest = models.RandomForest(n_estimators=100, max_depth=None, random_state=None) # Process dataset training_data_features, training_data_labels, mnist_test_data_features, mnist_test_data_labels, \ usps_test_data_features, usps_test_data_labels, combined_test_data_features, combined_test_data_labels = \ data.pre_process() # Logistic Regression logistic_regression.fit(training_data_features, training_data_labels, learning_rate=0.01, epochs=500) accuracy_mnist, confusion_mnist = logistic_regression.predict( mnist_test_data_features, mnist_test_data_labels) accuracy_usps, confusion_usps = logistic_regression.predict( usps_test_data_features, usps_test_data_labels) accuracy_combined, confusion_combined = logistic_regression.predict( combined_test_data_features, combined_test_data_labels) print_and_plot('Logistic Regression', accuracy_mnist, accuracy_usps, accuracy_combined, confusion_mnist, confusion_usps, confusion_combined) # Neural Network neural_network.fit(training_data_features, training_data_labels, epochs=10) accuracy_mnist, confusion_mnist = neural_network.predict( mnist_test_data_features, mnist_test_data_labels) accuracy_usps, confusion_usps = neural_network.predict( usps_test_data_features, usps_test_data_labels) accuracy_combined, confusion_combined = neural_network.predict( combined_test_data_features, combined_test_data_labels) print_and_plot('Neural Network', accuracy_mnist, accuracy_usps, accuracy_combined, confusion_mnist, confusion_usps, confusion_combined) # Support Vector Machine svm.fit(training_data_features, training_data_labels) accuracy_mnist, confusion_mnist = svm.predict(mnist_test_data_features, mnist_test_data_labels) accuracy_usps, confusion_usps = svm.predict(usps_test_data_features, usps_test_data_labels) accuracy_combined, confusion_combined = svm.predict( combined_test_data_features, combined_test_data_labels) print_and_plot('SVM', accuracy_mnist, accuracy_usps, accuracy_combined, confusion_mnist, confusion_usps, confusion_combined) # Random Forest random_forest.fit(training_data_features, training_data_labels) accuracy_mnist, confusion_mnist = random_forest.predict( mnist_test_data_features, mnist_test_data_labels) accuracy_usps, confusion_usps = random_forest.predict( usps_test_data_features, usps_test_data_labels) accuracy_combined, confusion_combined = random_forest.predict( combined_test_data_features, combined_test_data_labels) print_and_plot('Random Forest', accuracy_mnist, accuracy_usps, accuracy_combined, confusion_mnist, confusion_usps, confusion_combined)
] train_datasets = list() for f in train_files: temp = MatDNNDataset(dataset_dir + f, args.window_size) train_datasets.append(temp) validation_dataset = MatDNNDataset("data/Panasonic 18650PF Data/0degC/Drive cycles/06-02-17_10.43 0degC_HWFET_Pan18650PF.mat", args.window_size) # Data loader train_loaders = list() for d in train_datasets: temp = DataLoader(dataset=d, batch_size=args.batch_size, shuffle=True) train_loaders.append(temp) validation_loader = DataLoader(validation_dataset, batch_size=args.batch_size, shuffle=False) # Model, loss, and optimizer model = models.NeuralNet(args.input_size, args.hidden_size, args.num_classes, args.noise_std).to(device) criterion = nn.MSELoss() optimizer = torch.optim.Adam(model.parameters(), lr=args.learning_rate) def evaluate(dataloader): total_loss = 0.0 num_batches = 0.0 model.eval() with torch.no_grad(): for (x,y) in dataloader: x, y = x.to(device), y.to(device) outputs = model(x) loss = criterion(outputs, y) total_loss += loss.item() num_batches += 1 model.train()
def main(): data = Data() logistic_regression = models.LogisticRegression() neural_network = models.NeuralNet() svm = models.SupportVectorMachine(C=1.0, kernel='rbf', gamma='scale') random_forest = models.RandomForest(n_estimators=100, max_depth=None, random_state=None) discriminant_analysis = DiscriminantAnalysis() vaecnn = deep_learning_models.VAEConvolutionNeuralNet( input_data.read_data_sets("data", one_hot=True), (28, 28), (28, 28)) # Process dataset training_data_features, training_data_labels, mnist_test_data_features, mnist_test_data_labels, \ usps_test_data_features, usps_test_data_labels, combined_test_data_features, combined_test_data_labels = \ data.pre_process() # Discriminant Analysis IMAGE_SIZE = int(training_data_features.shape[-1]**0.5) discriminant_analysis.fit( training_data_features.reshape((-1, IMAGE_SIZE, IMAGE_SIZE)), training_data_labels) accuracy_mnist, confusion_mnist = discriminant_analysis.predict( 'MNIST dataset', mnist_test_data_features.reshape((-1, IMAGE_SIZE, IMAGE_SIZE)), mnist_test_data_labels) accuracy_usps, confusion_usps = discriminant_analysis.predict( 'USPS dataset', usps_test_data_features.reshape((-1, IMAGE_SIZE, IMAGE_SIZE)), usps_test_data_labels) accuracy_combined, confusion_combined = discriminant_analysis.predict( 'Combined dataset', combined_test_data_features.reshape((-1, IMAGE_SIZE, IMAGE_SIZE)), combined_test_data_labels) print_and_plot('Bayesian Discriminant Analysis', accuracy_mnist, accuracy_usps, accuracy_combined, confusion_mnist, confusion_usps, confusion_combined) # Logistic Regression logistic_regression.fit(training_data_features, training_data_labels, learning_rate=0.01, epochs=500) accuracy_mnist, confusion_mnist = logistic_regression.predict( mnist_test_data_features, mnist_test_data_labels) accuracy_usps, confusion_usps = logistic_regression.predict( usps_test_data_features, usps_test_data_labels) accuracy_combined, confusion_combined = logistic_regression.predict( combined_test_data_features, combined_test_data_labels) print_and_plot('Logistic Regression', accuracy_mnist, accuracy_usps, accuracy_combined, confusion_mnist, confusion_usps, confusion_combined) # Neural Network neural_network.fit(training_data_features, training_data_labels, epochs=10) accuracy_mnist, confusion_mnist = neural_network.predict( mnist_test_data_features, mnist_test_data_labels) accuracy_usps, confusion_usps = neural_network.predict( usps_test_data_features, usps_test_data_labels) accuracy_combined, confusion_combined = neural_network.predict( combined_test_data_features, combined_test_data_labels) print_and_plot('Neural Network', accuracy_mnist, accuracy_usps, accuracy_combined, confusion_mnist, confusion_usps, confusion_combined) # Support Vector Machine svm.fit(training_data_features, training_data_labels) accuracy_mnist, confusion_mnist = svm.predict(mnist_test_data_features, mnist_test_data_labels) accuracy_usps, confusion_usps = svm.predict(usps_test_data_features, usps_test_data_labels) accuracy_combined, confusion_combined = svm.predict( combined_test_data_features, combined_test_data_labels) print_and_plot('SVM', accuracy_mnist, accuracy_usps, accuracy_combined, confusion_mnist, confusion_usps, confusion_combined) # Random Forest random_forest.fit(training_data_features, training_data_labels) accuracy_mnist, confusion_mnist = random_forest.predict( mnist_test_data_features, mnist_test_data_labels) accuracy_usps, confusion_usps = random_forest.predict( usps_test_data_features, usps_test_data_labels) accuracy_combined, confusion_combined = random_forest.predict( combined_test_data_features, combined_test_data_labels) print_and_plot('Random Forest', accuracy_mnist, accuracy_usps, accuracy_combined, confusion_mnist, confusion_usps, confusion_combined) # Restricted Boltzmann Machine num_hidden_nodes_list = [20, 100, 500] for num_hidden_nodes in num_hidden_nodes_list: rbm = deep_learning_models.RBM(images=input_data.read_data_sets( "data", one_hot=True), n_components=num_hidden_nodes, learning_rate=0.02, batch_size=100, n_iter=1000, random_state=0) rbm.fit() rbm.gibbs_sampling(1000) rbm.generate_images(num_hidden_nodes) # Variational Auto Encoders code_unit_list = [2, 8, 16] for code_unit in code_unit_list: vae = deep_learning_models.VAE( input_data.read_data_sets("data", one_hot=True), code_unit) vae.generate_images(epochs=20) # Variational Auto Encoders with Convolutional Neural Networks vaecnn.encode() vaecnn.decode() vaecnn.compile_() vaecnn.train(epochs=10, batch_size=100)
for train_index, test_index in group_kfold.split(Xdata, Ydata, groups): model.train(Xdata[train_index], Ydata[train_index]) Ypred = model.test(Xdata[test_index]) confusion = sklearn.metrics.confusion_matrix(Ydata[test_index], Ypred, labels=features.labels) if sum_confusion is None: sum_confusion = np.zeros(confusion.shape) sum_confusion += confusion return sum_confusion / k def select_best_model(Xdata, Ydata, models): avg_accuracies = [(i, k_fold_cross_validate(Xdata, Ydata, 4, model)) for i, model in enumerate(models)] print(avg_accuracies) return max(avg_accuracies, key=operator.itemgetter(1)) allfeatures = features.compute_or_read_features() Xdata, Ydata = to_numpy_arrays(allfeatures) models = [models.RandomForest(200, 'gini'), models.LogisticRegression(), models.SVMNonLinear('rbf'), models.SVMNonLinear('sigmoid'), models.NeuralNet(), models.KNN()] #best = select_best_model(Xdata, Ydata, models) #print(best) for model in models: cm = k_fold_confusion_matrix(Xdata, Ydata, 4, model) save_confusion_matrix(cm, model._name) print(f"Confusion matrix for {model._name} saved")
def main(): data = Data() logistic_regression = models.LogisticRegression() neural_network = models.NeuralNet() svm = models.SupportVectorMachine(C=1.0, kernel='rbf', gamma='scale') random_forest = models.RandomForest(n_estimators=100, max_depth=None, random_state=None) discriminant_analysis = DiscriminantAnalysis() # Process dataset training_data_features, training_data_labels, mnist_test_data_features, mnist_test_data_labels, \ usps_test_data_features, usps_test_data_labels, combined_test_data_features, combined_test_data_labels = \ data.pre_process() # Discriminant Analysis IMAGE_SIZE = int(training_data_features.shape[-1]**0.5) discriminant_analysis.fit( training_data_features.reshape((-1, IMAGE_SIZE, IMAGE_SIZE)), training_data_labels) accuracy_mnist, confusion_mnist = discriminant_analysis.predict( 'MNIST dataset', mnist_test_data_features.reshape((-1, IMAGE_SIZE, IMAGE_SIZE)), mnist_test_data_labels) accuracy_usps, confusion_usps = discriminant_analysis.predict( 'USPS dataset', usps_test_data_features.reshape((-1, IMAGE_SIZE, IMAGE_SIZE)), usps_test_data_labels) accuracy_combined, confusion_combined = discriminant_analysis.predict( 'Combined dataset', combined_test_data_features.reshape((-1, IMAGE_SIZE, IMAGE_SIZE)), combined_test_data_labels) print_and_plot('Bayesian Discriminant Analysis', accuracy_mnist, accuracy_usps, accuracy_combined, confusion_mnist, confusion_usps, confusion_combined) # Logistic Regression logistic_regression.fit(training_data_features, training_data_labels, learning_rate=0.01, epochs=500) accuracy_mnist, confusion_mnist = logistic_regression.predict( mnist_test_data_features, mnist_test_data_labels) accuracy_usps, confusion_usps = logistic_regression.predict( usps_test_data_features, usps_test_data_labels) accuracy_combined, confusion_combined = logistic_regression.predict( combined_test_data_features, combined_test_data_labels) print_and_plot('Logistic Regression', accuracy_mnist, accuracy_usps, accuracy_combined, confusion_mnist, confusion_usps, confusion_combined) # Neural Network neural_network.fit(training_data_features, training_data_labels, epochs=10) accuracy_mnist, confusion_mnist = neural_network.predict( mnist_test_data_features, mnist_test_data_labels) accuracy_usps, confusion_usps = neural_network.predict( usps_test_data_features, usps_test_data_labels) accuracy_combined, confusion_combined = neural_network.predict( combined_test_data_features, combined_test_data_labels) print_and_plot('Neural Network', accuracy_mnist, accuracy_usps, accuracy_combined, confusion_mnist, confusion_usps, confusion_combined) # Support Vector Machine svm.fit(training_data_features, training_data_labels) accuracy_mnist, confusion_mnist = svm.predict(mnist_test_data_features, mnist_test_data_labels) accuracy_usps, confusion_usps = svm.predict(usps_test_data_features, usps_test_data_labels) accuracy_combined, confusion_combined = svm.predict( combined_test_data_features, combined_test_data_labels) print_and_plot('SVM', accuracy_mnist, accuracy_usps, accuracy_combined, confusion_mnist, confusion_usps, confusion_combined) # Random Forest random_forest.fit(training_data_features, training_data_labels) accuracy_mnist, confusion_mnist = random_forest.predict( mnist_test_data_features, mnist_test_data_labels) accuracy_usps, confusion_usps = random_forest.predict( usps_test_data_features, usps_test_data_labels) accuracy_combined, confusion_combined = random_forest.predict( combined_test_data_features, combined_test_data_labels) print_and_plot('Random Forest', accuracy_mnist, accuracy_usps, accuracy_combined, confusion_mnist, confusion_usps, confusion_combined)