咨询:sklearn中DecisionTreeClassifier实现的决策树算法类型
sklearn的DecisionTreeClassifier到底实现的是哪种决策树算法?
嘿,这个问题我之前做项目时特意确认过,答案很清晰:sklearn中的DecisionTreeClassifier核心实现的是CART算法(Classification and Regression Trees),不过它也支持通过参数调整来适配其他算法的部分特性,但底层框架还是CART。
具体细节可以拆成这几点:
- 核心框架是CART:CART的标志性特点是二叉树结构(每次分裂只把节点分成两个子节点),这也是
DecisionTreeClassifier默认的分裂方式,哪怕你用了其他特征选择准则,分裂逻辑依然是二叉的。 - 支持切换特征选择准则:
- 默认用
criterion='gini'(基尼不纯度),这是CART分类树的标准准则 - 你可以手动设置
criterion='entropy'来使用信息增益,这时候看起来有点像ID3算法,但因为还是二叉分裂,并不是纯ID3(ID3是多叉分裂) - 遗憾的是,sklearn目前没有直接支持信息增益比(C4.5的核心准则)的参数,所以没法直接实现纯C4.5
- 默认用
- 和ID3/C4.5的关键区别:ID3和C4.5都是多叉分裂(一个节点可以分成多个子节点),而sklearn的实现始终是二叉分裂,这是CART和另外两者最核心的差异之一。
内容的提问来源于stack exchange,提问作者skoundin
相关产品推荐
相关产品推荐

