问题:编程实现基于信息熵(信息增益)进行划分进行划分选择的决策树算法,并为表4.3(西瓜数据集3.0)中数据生成一棵决策树。
代码生成结果与书本结果基本一致,唯有(触感=硬滑)和(触感=软粘)时我的答案分别是(坏瓜)和(好瓜),而书本答案恰好相反。这里应为书本错误,因为根据数据人肉眼判定,稍糊硬滑的数据都为否,稍糊软粘数据都为是。如果有和我结论不一致的同学,欢迎指正!感谢ICS_的指出,在周老师的主页勘误表里已经修改此处错误,第一版第五次印刷及以后的书应该都没有此问题。
数据为中文,所以由中文编码问题导致很多trick,部分已在代码中指出。
python代码如下:
#coding: utf-8
import math
class Node:
def __init__(self, divided_by=None, condition=None, sons=[], label=None):
self.divided_by = divided_by # node is divided by this, None if it