Esempio n. 1
0
def get_pybrain_data_set(data, input_cols, target_cols=1):
    data_set = SupervisedDataSet(input_cols, target_cols)
    for row in data:
        # get first X columns for inputs
        # (technically "all indices less than X")
        # get last column as target
        data_set.addSample(tuple(row[:input_cols]), tuple([row[input_cols]]))

    return data_set


# normalize all values
p['wti_var'] = normalize(p['wti_var'])
p['wti_skew'] = normalize(p['wti_skew'])
p['wti_curt'] = normalize(p['wti_curt'])
p['i_entr'] = normalize(p['i_entr'])

# shuffle up data
p.reindex(np.random.permutation(p.index))

trainer = BackpropTrainer(
    buildNetwork(4, 5, 1),  # 2 input nodes, 3 hidden nodes, 1 output node
    get_pybrain_data_set(p.as_matrix(), 4),
    verbose=True)

#print(trainer.train())
#evaluator = ModuleValidator.classificationPerformance(trainer.module, trainer.ds)
cv = CrossValidator(trainer, trainer.ds, n_folds=5)
cv.setArgs(max_epochs=2, verbose=True)
print(cv.validate())
    'o': 1,
    'b': 2,
}


def row_preprocess(row):
    return [translation[x] for x in row]


if __name__ == "__main__":
    raw_data = list(csv.reader(open("tic-tac-toe.data")))
    targets = [1 if x[-1] == 'positive' else 0 for x in raw_data]
    inputs = [row_preprocess(x[:-1]) for x in raw_data]
    alldata = ClassificationDataSet(
        9, class_labels=['negative', 'positive'])

    for (i, t) in zip(inputs, targets):
        alldata.addSample(i, [t])

    network = buildNetwork(9, int(sys.argv[1]), 1,
                           hiddenclass=SigmoidLayer,
                           outclass=LinearLayer)

    trainer = BackpropTrainer(network, weightdecay=0.001)

    validator = CrossValidator(trainer, alldata, n_folds=2,
                               valfunc=ModuleValidator.MSE)
    validator.setArgs(max_epochs=500)
    ret = validator.validate()
    print(ret)