}, { '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)
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:') #***********************************************************#