sklearn 的 DecisionTreeClassifier,实际上只能实现 CART(二叉树) 算法。但是如果你想用其它分类决策树类型 ,比如 ID3 或 C4.5 ,scikit-learn 并没有直接实现。
1. 如果你想用 C4.5/ID3
- scikit-learn 没有直接实现 ID3 或 C4.5 (它即使
criterion='entropy',也是 CART 的二叉树结构)。 - 你需要用第三方包,比如 sklearn-tree 、decision-tree-id3 ,或者自己手写实现。
示例一:用 decision-tree-id3 实现 ID3 分类树
-
安装
pip install decision-tree-id3
-
用法示例(ID3 算法):
from id3 import Id3Estimator clf = Id3Estimator() clf.fit(X_train, y_train) y_pred = clf.predict(X_test)
示例二:用 sklearn-tree 实现 C4.5、ID3
-
sklearn-tree 可以直接 ID3、C4.5:
pip install sklearn-tree
from sklearn_tree import ID3Classifier, C45Classifier # ID3决策树 clf_id3 = ID3Classifier() clf_id3.fit(X_train, y_train) # C4.5决策树 clf_c45 = C45Classifier() clf_c45.fit(X_train, y_train)
2. scikit-learn 的 CART 分类决策树
你原来代码只实现 CART。如果你想要其它类型就需要用上面的方法。
3. 概括
- CART :
DecisionTreeClassifier(scikit-learn,默认实现) - ID3/C4.5 : 需用第三方库,如
decision-tree-id3或sklearn-tree
4. 完整对比如下
| 算法 | sklearn自带 | 推荐其他实现 |
|---|---|---|
| CART | ✔️ | DecisionTreeClassifier |
| ID3 | ❌ | ID3Classifier (sklearn-tree 或 decision-tree-id3) |
| C4.5 | ❌ | C45Classifier (sklearn-tree) |
总结
scikit-learn 自带的决策树只能实现CART(二叉树) ,想要做 ID3 或 C4.5 ,请用 sklearn-tree 或类似库,其代码如:
from sklearn_tree import ID3Classifier, C45Classifier
# ID3
clf_id3 = ID3Classifier()
clf_id3.fit(X_train, y_train)
# C4.5
clf_c45 = C45Classifier()
clf_c45.fit(X_train, y_train)
&spm=1001.2101.3001.5002&articleId=148722261&d=1&t=3&u=1c3c16e8add74df49bd2d0661fa5ece2)
2318

被折叠的 条评论
为什么被折叠?



