init = 0.00001 d = 10 # learning rate functions def lrf1(t): return init / (1 + ((init / d) * t)) def lrf2(t): return init / (1 * t) # Question 2.2 print("SVM in primal domain with stocahstic gradient descent.") print("\nWith first learning rate function: ") for C in Cs: print('\nC value = ' + str(C)) parameters = SVM.PrimalSVM(epochs, lrf1, C, train_data, train_labels) print("Parameters:") print(parameters) error = SVM.test(parameters, train_data, train_labels) print("Train error: " + str(error)) error = SVM.test(parameters, test_data, test_labels) print("Test error: " + str(error)) input("\nWith second learning rate function: ") for C in Cs: print('\nC value = ' + str(C)) parameters = SVM.PrimalSVM(epochs, lrf2, C, train_data, train_labels) print("Parameters:") print(parameters) error = SVM.test(parameters, train_data, train_labels) print("Train error: " + str(error)) error = SVM.test(parameters, test_data, test_labels)