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