From 7c41123de9ae998368f2bf484edbdd5d179417f3 Mon Sep 17 00:00:00 2001 From: jiangzhonglian Date: Sat, 18 Mar 2017 21:55:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=A7=86=E9=A2=91=E6=B3=A8?= =?UTF-8?q?=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/python/03.DecisionTree/DecisionTree.py | 4 ++-- testResult/tree.pdf | Bin 16281 -> 15775 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/python/03.DecisionTree/DecisionTree.py b/src/python/03.DecisionTree/DecisionTree.py index ed266377..f6f4bf1f 100644 --- a/src/python/03.DecisionTree/DecisionTree.py +++ b/src/python/03.DecisionTree/DecisionTree.py @@ -185,7 +185,7 @@ def classify(inputTree, featLabels, testVec): Args: inputTree 决策树模型 - featLabels label标签对应的名称 + featLabels Feature标签对应的名称 testVec 测试输入的数据 Returns: classLabel 分类的结果值,需要映射label才能知道名称 @@ -241,7 +241,7 @@ if __name__ == "__main__": myTree = createTree(myDat, copy.deepcopy(labels)) print myTree # [1, 1]表示要取的分支上的节点位置,对应的结果值 - print classify(myTree, labels, [1, 1]) + # print classify(myTree, labels, [1, 1]) # 画图可视化展现 dtPlot.createPlot(myTree) diff --git a/testResult/tree.pdf b/testResult/tree.pdf index 2a7e0a8dbe808859469dd86053c86c5fc4a3dc78..6ab09f258bd4bff86a1766b1949ef2417a34775f 100644 GIT binary patch delta 11640 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 yGphwBGYfvl|0nft0%EkpxK_Q_e3IAVr0PoBI delta 12114 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