#Target dimension is supposed to be 1 #The targets are class labels starting from zero for i in range(N): alldata.appendLinked(Xdf.ix[i,:],Ydf['default_Yes'].ix[i,:]) #generate training and testing data sets tstdata, trndata = alldata.splitWithProportion(0.10) #classes are encoded into one output unit per class, that takes on a certain value if the class is present trndata._convertToOneOfMany( ) tstdata._convertToOneOfMany( ) len(tstdata), len(trndata) #calculate statistics and generate histograms alldata.calculateStatistics() print alldata.classHist print alldata.nClasses print alldata.getClass(1) ######################################################################################### ######################################################################################### ######################################################################################### ######################################################################################### #construct the network from pybrain.structure import FeedForwardNetwork net=FeedForwardNetwork() #constructing the input, hidden and output layers from pybrain.structure import LinearLayer, SigmoidLayer inLayer = LinearLayer(3,name="input_nodes") hiddenLayer1 = SigmoidLayer(3,name="hidden_nodes1") hiddenLayer2 = SigmoidLayer(3,name="hidden_nodes1") outLayer = LinearLayer(2,name="output_node")
avgluminosity = sum(pixels) / len(pixels) processedpixels = map( lambda p: min(p + 255 / 2 - avgluminosity, 255) if (avgluminosity < 255 / 2) else max(p + 255 / 2 - avgluminosity, 0), pixels) # Save lowres images a = np.array(processedpixels) a = a.reshape(-1, width) im = toimage(a) im.save(os.path.join(masyafolder + '/bw', trainingpicture)) ds.appendLinked(processedpixels, [1]) # 0 = Murka; 1 = Masya print "There are", ds.nClasses, "classes" print "Class 0 is", ds.getClass(0) tstdata_temp, trndata_temp = ds.splitWithProportion(0.25) tstdata = ClassificationDataSet(height * width, 1, nb_classes=2, class_labels=['Murka', 'Masya']) for n in xrange(0, tstdata_temp.getLength()): tstdata.addSample( tstdata_temp.getSample(n)[0], tstdata_temp.getSample(n)[1]) trndata = ClassificationDataSet(height * width, 1, nb_classes=2,
ds_training.appendLinked(image_vector, [category]) category+=1 category = 0 for shape in shapes: for i in range(8): image = imread('C:/Users/alexis.matelin/Documents/Neural Networks/Visual classification/shapes/testing/'+shape+str(i+1)+'.png', as_grey=True, plugin=None, flatten=None) image_vector = image.flatten() ds_testing.appendLinked(image_vector, [category]) ds_training.calculateStatistics() ds_training.getClass(0) print(ds_training.getField('target')) ds_training._convertToOneOfMany(bounds=[0, 1]) ds_testing._convertToOneOfMany(bounds=[0, 1]) print(ds_training.getField('target')) net = buildNetwork(1024,12, 12, 3, hiddenclass = TanhLayer, outclass=SoftmaxLayer) trainer = BackpropTrainer(net, dataset=ds_training, verbose=True, learningrate=0.01) trainer.trainUntilConvergence() out = net.activateOnDataset(ds_testing)
def castToRegression(self, values): """Converts data set into a SupervisedDataSet for regression. Classes are used as indices into the value array given.""" regDs = SupervisedDataSet(self.indim, 1) fields = self.getFieldNames() fields.remove('target') for f in fields: regDs.setField(f, self[f]) regDs.setField('target', values[self['class'].astype(int)]) return regDs if __name__ == "__main__": dataset = ClassificationDataSet(2, 1, class_labels=['Urd', 'Verdandi', 'Skuld']) dataset.appendLinked([ 0.1, 0.5 ] , [0]) dataset.appendLinked([ 1.2, 1.2 ] , [1]) dataset.appendLinked([ 1.4, 1.6 ] , [1]) dataset.appendLinked([ 1.6, 1.8 ] , [1]) dataset.appendLinked([ 0.10, 0.80 ] , [2]) dataset.appendLinked([ 0.20, 0.90 ] , [2]) dataset.calculateStatistics() print(("class histogram:", dataset.classHist)) print(("# of classes:", dataset.nClasses)) print(("class 1 is: ", dataset.getClass(1))) print(("targets: ", dataset.getField('target'))) dataset._convertToOneOfMany(bounds=[0, 1]) print("converted targets: ") print((dataset.getField('target'))) dataset._convertToClassNb() print(("reconverted to original:", dataset.getField('target')))