Mercurial > pylearn
diff make_test_datasets.py @ 432:8e4d2ebd816a
added a test for LinearRegression
author | Yoshua Bengio <bengioy@iro.umontreal.ca> |
---|---|
date | Tue, 29 Jul 2008 11:16:05 -0400 |
parents | 0f8c81b0776d |
children | 2d8490d76b3e |
line wrap: on
line diff
--- a/make_test_datasets.py Tue Jul 29 10:19:25 2008 -0400 +++ b/make_test_datasets.py Tue Jul 29 11:16:05 2008 -0400 @@ -1,4 +1,8 @@ from pylearn.dataset import ArrayDataSet +from shapeset.dset import Polygons +from linear_regression import linear_predictor +from kernel_regression import kernel_predictor +from numpy import * """ General-purpose code to generate artificial datasets that can be used @@ -47,37 +51,37 @@ Return a training set and a test set, by splitting the generated n_examples according to the 'train_frac'tion. """ - n_train=int(train_frac*n_examples) - n_test=n_examples-n_train - if n_inputs==1: - delta1=2./n_train - delta2=2./n_test - inputs = vstack((array(zip(range(n_train)))*delta1-1, - 0.5*delta2+array(zip(range(n_test)))*delta2-1)) - else: - inputs = random.normal(size=(n_examples,n_inputs)) - if not f: - f = linear_predictor - if f==kernel_predictor and not otherargs[1]: - otherargs=(otherargs[0],inputs[0:n_train]) - if not params_shape: - if f==linear_predictor: - params_shape = (n_inputs+1,n_targets) - elif f==kernel_predictor: - params_shape = (otherargs[1].shape[0]+1,n_targets) - theta = random.normal(size=params_shape) if params_shape else None - if b: - theta[0]=b - outputs = f(inputs,theta,otherargs) - targets = outputs + random.normal(scale=noise_level,size=(n_examples,n_targets)) -# the | stacking creates a strange bug in LookupList constructor: -# trainset = ArrayDataSet(inputs[0:n_examples/2],{'input':slice(0,n_inputs)}) | \ -# ArrayDataSet(targets[0:n_examples/2],{'target':slice(0,n_targets)}) -# testset = ArrayDataSet(inputs[n_examples/2:],{'input':slice(0,n_inputs)}) | \ -# ArrayDataSet(targets[n_examples/2:],{'target':slice(0,n_targets)}) - data = hstack((inputs,targets)) - trainset = ArrayDataSet(data[0:n_train], - {'input':slice(0,n_inputs),'target':slice(n_inputs,n_inputs+n_targets)}) - testset = ArrayDataSet(data[n_train:], - {'input':slice(0,n_inputs),'target':slice(n_inputs,n_inputs+n_targets)}) - return trainset,testset,theta + n_train=int(train_frac*n_examples) + n_test=n_examples-n_train + if n_inputs==1: + delta1=2./n_train + delta2=2./n_test + inputs = vstack((array(zip(range(n_train)))*delta1-1, + 0.5*delta2+array(zip(range(n_test)))*delta2-1)) + else: + inputs = random.normal(size=(n_examples,n_inputs)) + if not f: + f = linear_predictor + if f==kernel_predictor and not otherargs[1]: + otherargs=(otherargs[0],inputs[0:n_train]) + if not params_shape: + if f==linear_predictor: + params_shape = (n_inputs+1,n_targets) + elif f==kernel_predictor: + params_shape = (otherargs[1].shape[0]+1,n_targets) + theta = random.normal(size=params_shape) if params_shape else None + if b: + theta[0]=b + outputs = f(inputs,theta,otherargs) + targets = outputs + random.normal(scale=noise_level,size=(n_examples,n_targets)) + # the | stacking creates a strange bug in LookupList constructor: + # trainset = ArrayDataSet(inputs[0:n_examples/2],{'input':slice(0,n_inputs)}) | \ + # ArrayDataSet(targets[0:n_examples/2],{'target':slice(0,n_targets)}) + # testset = ArrayDataSet(inputs[n_examples/2:],{'input':slice(0,n_inputs)}) | \ + # ArrayDataSet(targets[n_examples/2:],{'target':slice(0,n_targets)}) + data = hstack((inputs,targets)) + trainset = ArrayDataSet(data[0:n_train], + {'input':slice(0,n_inputs),'target':slice(n_inputs,n_inputs+n_targets)}) + testset = ArrayDataSet(data[n_train:], + {'input':slice(0,n_inputs),'target':slice(n_inputs,n_inputs+n_targets)}) + return trainset,testset,theta