1import random 2 3import numpy 4 5from rdkit.ML.DecTree import ID3 6 7 8def GenRandomExamples(nVars=10, randScale=0.3, bitProb=0.5, nExamples=500, seed=(0, 0), 9 addResults=1): 10 random.seed(seed[0]) 11 varWeights = numpy.array([random.random() for _ in range(nVars)]) * randScale 12 examples = [None] * nExamples 13 14 for i in range(nExamples): 15 varVals = [random.random() > bitProb for _ in range(nVars)] 16 temp = numpy.array(varVals) * varWeights 17 res = sum(temp) 18 if addResults: 19 varVals.append(res >= 1.) 20 examples[i] = varVals 21 22 nPossibleVals = [2] * (nExamples + 1) 23 attrs = list(range(nVars)) 24 25 return (examples, attrs, nPossibleVals) 26 27 28if __name__ == '__main__': # pragma: nocover 29 import pickle 30 examples, attrs, nPossibleVals = GenRandomExamples() 31 outF = open('random.dat.pkl', 'wb+') 32 pickle.dump(examples, outF) 33 pickle.dump(attrs, outF) 34 pickle.dump(nPossibleVals, outF) 35 36 tree = ID3.ID3Boot(examples, attrs, nPossibleVals) 37 tree.Pickle('save.pkl') 38