Example #1
0
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"])
Example #2
0
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)
Example #5
0
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)