def run_nn_fold(training_data, test_data): test_features, ignore, featureMap, labels, labelMap = fs.mutualinfo(training_data) input_len = len(test_features[0]) num_classes = len(labelMap.keys()) train_ds = ClassificationDataSet(input_len, 1,nb_classes=num_classes) for i in range(len(test_features)): train_ds.addSample(tuple(test_features[i]), (labels[i])) train_ds._convertToOneOfMany() net = buildNetwork(train_ds.indim, 2, train_ds.outdim, bias=True, hiddenclass=TanhLayer, outclass=SoftmaxLayer) trainer = BackpropTrainer(net, train_ds, verbose=True) print "training until convergence..." trainer.trainUntilConvergence(maxEpochs=100) print "done. testing..." test_ds = ClassificationDataSet(input_len, 1,nb_classes=num_classes) labels = [] for tweetinfo in test_data: featuresFound = tweetinfo["Features"] label = tweetinfo["Answer"] labels.append(label) features = [0]*len(featureMap.keys()) for feat in featuresFound: if feat in featureMap: features[ featureMap[feat] ] = 1 test_ds.addSample(tuple(features), (labelMap[label])) test_ds._convertToOneOfMany() tstresult = percentError( trainer.testOnClassData( dataset=test_ds ), test_ds['class'] ) print tstresult
def train(training_data): """ Trains a model, using bernoulli features """ if ARGV.features == "bernoulli": features, featureMap, labels, labelMap = fs.bernoulli(training_data) else: features, scores, featureMap, labels, labelMap = fs.mutualinfo(training_data) learner = models[ ARGV.model ]() if ARGV.one_vs: labels[ labels != labelMap[ ARGV.one_vs ] ] = 0 labels[ labels == labelMap[ ARGV.one_vs ] ] = 1 model = learner.train(features, labels) if ARGV.features == "bernoulli": return (model, featureMap, labelMap) else: return ((model,scores), featureMap, labelMap)
def train(training_data): """ Trains a model, using bernoulli features """ if ARGV.features == "bernoulli": features, featureMap, labels, labelMap = fs.bernoulli(training_data) else: features, scores, featureMap, labels, labelMap = fs.mutualinfo( training_data) learner = models[ARGV.model]() if ARGV.one_vs: labels[labels != labelMap[ARGV.one_vs]] = 0 labels[labels == labelMap[ARGV.one_vs]] = 1 model = learner.train(features, labels) if ARGV.features == "bernoulli": return (model, featureMap, labelMap) else: return ((model, scores), featureMap, labelMap)
def run_nn_fold(training_data, test_data): test_features, ignore, featureMap, labels, labelMap = fs.mutualinfo( training_data) input_len = len(test_features[0]) num_classes = len(labelMap.keys()) train_ds = ClassificationDataSet(input_len, 1, nb_classes=num_classes) for i in range(len(test_features)): train_ds.addSample(tuple(test_features[i]), (labels[i])) train_ds._convertToOneOfMany() net = buildNetwork(train_ds.indim, 2, train_ds.outdim, bias=True, hiddenclass=TanhLayer, outclass=SoftmaxLayer) trainer = BackpropTrainer(net, train_ds, verbose=True) print "training until convergence..." trainer.trainUntilConvergence(maxEpochs=100) print "done. testing..." test_ds = ClassificationDataSet(input_len, 1, nb_classes=num_classes) labels = [] for tweetinfo in test_data: featuresFound = tweetinfo["Features"] label = tweetinfo["Answer"] labels.append(label) features = [0] * len(featureMap.keys()) for feat in featuresFound: if feat in featureMap: features[featureMap[feat]] = 1 test_ds.addSample(tuple(features), (labelMap[label])) test_ds._convertToOneOfMany() tstresult = percentError(trainer.testOnClassData(dataset=test_ds), test_ds['class']) print tstresult