def constructDecisionTree(self): # initialize nsfdb = MySQLdb.connect(host="localhost", user="******", db="nsfdb") nsfcur = nsfdb.cursor() self.capabilitylist = [] self.learning_input = [] self.learning_output = [] self.nsflist = [] self.nsf_capability = [] # find all registered capabilities nsfcur.execute("SELECT DISTINCT cname FROM capabilitytable") rows = nsfcur.fetchall() rowlen = len(rows) for ptr in rows: self.capabilitylist.append(ptr[0]) self.learning_output.append([]) # construct database for decision tree nsfcur.execute("SELECT DISTINCT nname FROM nsftable") rows = nsfcur.fetchall() for ptr in rows: self.nsflist.append(ptr[0]) for nsf in self.nsflist: temp_capalist = [] nsfcur.execute("SELECT cname FROM capabilitytable WHERE nname='" + nsf + "'") rows = nsfcur.fetchall() for ptr in rows: temp_capalist.append(ptr[0]) self.nsf_capability.append(temp_capalist) """ learning_temp = [] for i in range(len(self.capabilitylist)): learning_temp.append(False) self.learning_input.append(learning_temp) for i in range(len(self.nsf_capability)): self.learning_output[i].append(False) """ for x in range(len(self.nsf_capability)): learning_temp = [] for i in range(len(self.capabilitylist)): if self.capabilitylist[i] in self.nsf_capability[x]: learning_temp.append(True) else: learning_temp.append(False) self.learning_input.append(learning_temp) for y in range(len(self.nsf_capability)): self.learning_output[y].append(x == y) for i in range(len(self.nsf_capability)): capa_temp = [] for j in range(len(self.nsf_capability[i])): capa_temp.append(self.nsf_capability[i][j]) for j in range(len(self.nsf_capability)): if i != j: for k in range(len(self.nsf_capability[j])): if self.nsf_capability[j][k] in capa_temp: capa_temp.remove(self.nsf_capability[j][k]) learning_temp = [] for j in range(len(self.capabilitylist)): if self.capabilitylist[j] in capa_temp: learning_temp.append(True) else: learning_temp.append(False) self.learning_input.append(learning_temp) for y in range(len(self.nsf_capability)): self.learning_output[y].append((i == y and len(capa_temp) > 0)) # construct Decision Tree self.dtlist = [] for i in range(len(self.nsf_capability)): self.dtlist.append( DecisionTree.DecisionTreeNode(self.learning_input, self.learning_output[i], 0.005, self.capabilitylist)) nsfcur.close() nsfdb.close()