def buildTree(self, data, features):
classification = data[:, -1]
uniqueValues = set(classification)
if len(uniqueValues) == 1:
return classification[0]
if len(data[0]) == 1:
return self.majorityCnt(classification)
infomatinoGain = InformationGain()
bestFeature = infomatinoGain.chooseBestFeatureToSplit(data)
bestFeatureLabel = features[bestFeature]
decisionTree = {bestFeatureLabel: {}}
featureValues = set(data[:, bestFeature])
tmpFeatures = np.delete(features, bestFeature, axis=0)
for value in featureValues:
subData = infomatinoGain.splitData(data, bestFeature, value)
decisionTree[bestFeatureLabel][value] = self.buildTree(subData, tmpFeatures)
return decisionTree
评论列表
文章目录