Exemplo n.º 1
0
        # Fit One-vs-all Logistic Regression
        model = linear_model.logLinearClassifier(maxEvals=500, verbose=0)
        model.fit(XMulti, yMulti)

        print("logLinearClassifier Training error %.3f" % utils.classification_error(model.predict(XMulti), yMulti))
        print("logLinearClassifier Validation error %.3f" % utils.classification_error(model.predict(XMultiValid), yMultiValid))

    elif question == "3.3":
        # Load Binary and Multi -class data
        data = utils.load_dataset("multiData")
        XMulti, yMulti = data['X'], data['y']
        XMultiValid, yMultiValid = data['Xvalid'], data['yvalid']

        # Fit logRegL2 model
        model = linear_model.softmaxClassifier(maxEvals=500)
        model.fit(XMulti, yMulti)

        print("Training error %.3f" % utils.classification_error(model.predict(XMulti), yMulti))
        print("Validation error %.3f" % utils.classification_error(model.predict(XMultiValid), yMultiValid))

    elif question == "3.4":
        data = utils.load_dataset("multiData")
        XMulti, yMulti = data['X'], data['y']
        XMultiValid, yMultiValid = data['Xvalid'], data['yvalid']

        ovr = LogisticRegression(C=1e8, fit_intercept=False)
        sft = LogisticRegression(multi_class="multinomial", solver="lbfgs", C=1e8, fit_intercept=False)

        ovr.fit(XMulti, yMulti)
        print("Training error %.3f" % utils.classification_error(ovr.predict(XMulti), yMulti))
Exemplo n.º 2
0
        model = linear_model.logLinearClassifier(maxEvals=500, verbose=0)
        model.fit(XMulti, yMulti)

        print("logLinearClassifier Training error %.3f" %
              utils.classification_error(model.predict(XMulti), yMulti))
        print("logLinearClassifier Validation error %.3f" %
              utils.classification_error(model.predict(XMultiValid),
                                         yMultiValid))

    elif question == "3.3":
        data = utils.load_dataset("multiData")
        XMulti, yMulti = data['X'], data['y']
        XMultiValid, yMultiValid = data['Xvalid'], data['yvalid']

        model = linear_model.softmaxClassifier(maxEvals=500, verbose=0)
        model.fit(XMulti, yMulti)

        print("Training error %.3f" %
              utils.classification_error(model.predict(XMulti), yMulti))
        print("Validation error %.3f" % utils.classification_error(
            model.predict(XMultiValid), yMultiValid))

    elif question == "3.4":
        data = utils.load_dataset("multiData")
        XMulti, yMulti = data['X'], data['y']
        XMultiValid, yMultiValid = data['Xvalid'], data['yvalid']

        # One-vs-all
        model = LogisticRegression(multi_class='ovr',
                                   fit_intercept=False,
Exemplo n.º 3
0
        binarizer = LabelBinarizer()
        Y = binarizer.fit_transform(y)
        y_int = np.int32(y)

        lams = [2, 1.75, 1.5, 1.25, 1]
        test_error = []
        train_error = []

        train_bias = np.ones((X.shape[0], 1))
        test_bias = np.ones((Xtest.shape[0], 1))
        X = np.hstack((train_bias, X))
        Xtest = np.hstack((test_bias, Xtest))

        for lammy in lams:
            model = linear_model.softmaxClassifier(lammy=lammy, epochs=10, alpha=1, batch=5000)
            model.fit(X, y, Y)
            pred = model.predict(Xtest)
            e = utils.classification_error(ytest, pred)
            print("at lambda ", lammy, "validation error is ", e)
            test_error = np.append(test_error, e)
            pred = model.predict(X)
            e = utils.classification_error(y, pred)
            print("at lambda ", lammy, "train error is ", e)
            train_error = np.append(train_error, e)

        plt.plot(lams, test_error, label="validation error")
        plt.plot(lams, train_error, label="training error")
        plt.title("Multi-Class Linear Classifier")
        plt.xlabel("Lambda")
        plt.ylabel("Error")
Exemplo n.º 4
0
        print("Test error = {:.4f}".format(testErr))
        print('Time taken: ', time.time() - t)

    elif question == "knn":
        # mostly hyperparameter tuning, 10 seems to be the sweet spot

        t = time.time()

        model = KNN(3)
        model.fit(X, y)
        yhat = model.predict(Xtest)
        testErr = np.mean(ytest != yhat)

        print('Test error = {:.4f}'.format(testErr))
        print('Time taken: ', time.time() - t)

    elif question == "reg":
        t = time.time()
        model = softmaxClassifier(maxEvals=100)
        # r = np.random.randint(5, size=np.shape(X)[0])
        # Xt = X[r == 0]
        # yt = y[r == 0]
        # model.fit(Xt,yt)
        model.fit(X, y)
        yhat = model.predict(Xtest)
        print(Xtest)
        testErr = np.mean(ytest != yhat)
        print("yhat: ", yhat)

        print('Test error = {:.4f}'.format(testErr))
        print('Time taken: ', time.time() - t)