python - 来自多种数据类型特征的决策树

标签 python scikit-learn decision-tree

我正在尝试使用 scikit-learn 的 DecisionTreeClassifier 构建决策树。我的数据具有由整数和浮点值组成的数字特征。

在构建决策树时,整型特征得到转换 浮。

例如:如果 A 是一个只能具有 1-12 整数值的特征,则树中会出现诸如“A < 5.5”或“A < 3.1”之类的拆分标准。我不想要 A 的浮点值拆分标准。

如果整数特征被转换为 float ,树的深度会增加。如何限制整数特征转换为 float ?

另外,scikit-learn 的 DecisionTreeClassifier 不允许分类特征。是否有任何替代包/库用于构建允许分类特征的决策树?

最佳答案

关于决策树的整数与 float ,对于构建树来说无关紧要。两个连续整数之间的任何拆分都是等价的。它永远不会在同一对连续整数之间进行两次拆分,因为这样做,其中一个叶子将没有样本。无论使用整数还是 float ,它都会生成一个等效模型。

使用 scikit-learn,您可以通过 LabelBinarizer 使用分类特征。这将为类别创建一个虚拟值矩阵(一个热编码)。

这是一个例子:

from sklearn.preprocessing import LabelBinarizer
from sklearn.tree import DecisionTreeClassifier
import numpy as np

定义特征

month = ['Jan', 'Feb', 'Jan', 'Mar']
day = [1, 15, 30, 5]

定义类别目标

y = [0, 1, 1, 1]

制作假人:

lb = LabelBinarizer()
X_month_dummies = lb.fit_transform(month)

X_month_dummies 那么:

array([[0, 1, 0],
       [1, 0, 0],
       [0, 1, 0],
       [0, 0, 1]])

将虚拟变量与数字特征结合(天)

X = np.hstack([np.column_stack([day]), X_month_dummies])

构建分类器。

clf = DecisionTreeClassifier()
clf.fit(X, y)

关于python - 来自多种数据类型特征的决策树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34688177/

相关文章:

python - 在 Python 中使用堆栈计算中缀表达式 : I cant find my error

decision-tree - shap.force_plot() 引发异常 : In v0. 20 force_plot 现在需要基值作为第一个参数

python - sklearn LogisticRegression predict_proba() 在使用 sample_weight 参数时给出错误的预测

python - 向 CountVectorizer 矩阵添加附加功能

python - 得分为 ='roc_auc' 的 cross_val_score 和 roc_auc_score 有什么区别?

java - Weka J48 分类不遵循树

python - GridSearchCV 给出 ValueError : continuous is not supported for DecisionTreeRegressor

python - 使用 Python 请求和 REST API 发布 WordPress 帖子

python - django jet 中的自定义 Logo

python - 使用 panda 或 numpy 从一个 csv 加载多个数据帧