def exercise_1_1B(): print("exercise_1_1B") X, y = load_data() X = as3f.normalize_mnist_data(X) X, y, X_train, y_train, X_test, y_test = as3f.randomize_and_split_data(X, y) # Record the clf best_gscv = None best_sig = None best_deg = None for sig in [.01,.1,1,10,100]: for deg in [1,2,3,4,5,6,7]: svc_param = {"kernel":["precomputed"], "C":[.1,1,10,100,1000,10000]} G_train = compute_gram_X_Y(X_train,X_train,sig,deg) print("\nsig ", sig, "deg",deg) gscv = as3f.grid_search_SVC(G_train, y_train, SVC, 5, svc_param) try: if gscv.best_score_ > best_gscv.best_score_: best_gscv = gscv best_sig = sig best_deg = deg except: best_gscv = gscv best_sig = sig best_deg = deg print ("\nBest", str(round(abs(best_gscv.best_score_),5)), "sig:",best_sig,"deg",best_deg,"C",best_gscv.best_params_["C"])
def exercise_1_1C(): print("exercise_1_1C") X, y = load_data() X = as3f.normalize_mnist_data(X) X, y, X_train, y_train, X_test, y_test = as3f.randomize_and_split_data(X, y) print(X_train.shape, X_test.shape) sig = 10 deg = 7 c = 0.1 G_train = compute_gram_X_Y(X_train,X_train,sig,deg) clf = SVC(kernel="precomputed",C=c) clf.fit(G_train,y_train) G_test = compute_gram_X_Y(X_test,X_train) y_pred = clf.predict(G_test) print("C:",c,"Sig:",sig,"Deg:",deg) print("Acc:",np.sum(y_pred == y_test)/len(y_test)) sig = .1 deg = 4 c = 10000 G_train = compute_gram_X_Y(X_train,X_train,sig,deg) clf = SVC(kernel="precomputed",C=c) clf.fit(G_train,y_train) G_test = compute_gram_X_Y(X_test,X_train) y_pred = clf.predict(G_test) print("C:",c,"Sig:",sig,"Deg:",deg) print("Acc:",np.sum(y_pred == y_test)/len(y_test))
def exercise_1(): print("A3 Ex1 and Ex2") X, y = load_data() X = as3f.normalize_mnist_data(X) X, y, X_train, y_train, X_test, y_test = as3f.randomize_and_split_data( X, y) # Hypertuning values of C and gamma test_params = [.1, 1, 10, 100, 1000] # Setup each model svc_params = [{ 'kernel': ['linear'], 'C': test_params }, { 'kernel': ['rbf'], 'C': test_params, 'gamma': test_params }, { 'kernel': ['poly'], 'C': test_params, 'degree': [2, 3, 4, 5, 6] }] # Loop through each model for svc_param in svc_params: # CV and Regression using Grid Search Cross Validation gscv = as3f.grid_search_SVC(X_train, y_train, SVC, 5, svc_param) # Analysis and plot of each model exercise_1_2(gscv, X_train, y_train, X_test, y_test)
def exercise_1_1vg(): print("exercise1_1vg") X, y = load_data() X = as3f.normalize_mnist_data(X) X, y, X_train, y_train, X_test, y_test = as3f.randomize_and_split_data( X, y) # store best values best_sig = None best_deg = None best_c = None best_accuracy = None for deg in [2]: #1,2,3,4,5]: for c in [10000]: #1,10,100,1000,10000]: for sig in [.01]: #.01,.1,1]: # Compute gram X_train and X_train G_train = compute_gram_X_Y(X_train, X_train, sig, deg) # Create SVC instance and fit using precomputed gram matrix clf = SVC(kernel="precomputed", C=c) clf.fit(G_train, y_train) # Predict using gram of X_test and X_train G_test = compute_gram_X_Y(X_test, X_train) y_pred = clf.predict(G_test) # Get accuracy to find best hyperparameters accuracy = np.sum(y_pred == y_test) / len(y_test) #print("C:",c,"Sig:",sig,"Deg:",deg) #print("Acc:", accuracy) # store best hyperparameters try: if accuracy > best_accuracy: best_sig = sig best_deg = deg best_c = c best_accuracy = accuracy except: best_sig = sig best_deg = deg best_c = c best_accuracy = accuracy # print best hyperparameters print("Best ", best_accuracy, "sig", best_sig, "deg", best_deg, "c", best_c)
def exercise_1_1_1(): print("exercise1_1") X, y = load_data() X = as3f.normalize_mnist_data(X) X, y, X_train, y_train, X_test, y_test = as3f.randomize_and_split_data(X, y, seed=55) best_clf = None best_sig = None best_deg = None best_c = None best_accuracy = None best_G_train = None for deg in [2]:#1,2,3,4,5]: for c in [10000]:#1,10,100,1000,10000]: for sig in [.01]:#.01,.1,1]: G_train = compute_gram_X_Y(X_train,X_train,sig,deg) clf = SVC(kernel="precomputed",C=c) clf.fit(G_train,y_train) G_test = compute_gram_X_Y(X_test,X_train) y_pred = clf.predict(G_test) accuracy = np.sum(y_pred == y_test)/len(y_test) print("C:",c,"Sig:",sig,"Deg:",deg) print("Acc:", accuracy) try: if accuracy > best_accuracy: best_clf = clf best_sig = sig best_deg = deg best_c = c best_accuracy = accuracy best_G_train = G_train except: best_clf = clf best_sig = sig best_deg = deg best_c = c best_accuracy = accuracy best_G_train = G_train print ("Best ",best_accuracy, "sig",best_sig, "deg", best_deg, "c",best_c)