Beispiel #1
0
        },
        {
            'regwgt': 0.01
        },
        {
            'regwgt': 1.0
        },
    )
    numparams = len(parameters)

    errors = {}
    for learnername in regressionalgs:
        errors[learnername] = np.zeros((numparams, numruns))

    for r in range(numruns):
        trainset, testset = dtl.load_ctscan(trainsize, testsize)
        print(('Running on train={0} and test={1} samples for run {2}').format(
            trainset[0].shape[0], testset[0].shape[0], r))

        for p in range(numparams):
            params = parameters[p]
            for learnername, learner in regressionalgs.items():
                # Reset learner for new parameters
                learner.reset(params)
                print('Running learner = ' + learnername + ' on parameters ' +
                      str(learner.getparams()))
                # Train model
                learner.learn(trainset[0], trainset[1])
                # Test model
                predictions = learner.predict(testset[0])
                error = geterror(testset[1], predictions)
Beispiel #2
0
from regressionalgorithms import *
import dataloader
from dataloader import load_ctscan


def l2err(prediction, ytest):
    """ l2 error (i.e., root-mean-squared-error) """
    return np.linalg.norm(np.subtract(prediction, ytest)) / ytest.shape[0]


#Load the data
error_list = []
for i in range(3):
    print("Run=", i + 1)
    # We load different samples from the datasets.
    train, test = load_ctscan(20000, 10000)
    X_train, y_train = train
    X_test, y_test = test

    # Learn on the features that don't give singular matrix.
    linreg = FSLinearRegression({'features': range(69)})
    try:
        linreg.learn(X_train, y_train)
    except np.linalg.linalg.LinAlgError:
        continue
    y_pred = linreg.predict(X_test)
    #Record error
    error_list.append(l2err(y_pred, y_test))
    plt.plot(linreg.params['features'],
             linreg.weights,
             label="Run={}".format(i + 1))
    """ l2 error squared """
    return np.square(np.linalg.norm(np.subtract(prediction,ytest)))

def geterror(predictions, ytest):
    # Can change this to other error values
    return l2err(predictions,ytest)/ytest.shape[0]

if __name__ == '__main__':
    run = True

    #common constants and data loaders
    trainsize = 1000
    testsize = 5000
    numparams = 1
    numruns = 1
    trainset, testset = dtl.load_ctscan(trainsize, testsize)
    print('Loading Data...')

    while (run == True):
        print('1 for 2.a')
        print('2 for 2.b')
        print('3 for 2.c')
        print('4 for 2.d')
        print('5 for 2.e')
        print('6 for 2.f')
        print('7 for 2.g')
        print('8 for 2.h')
        print('0 for exit')
        qnum = input('Enter the question number to run:')

        #***********************************************************#