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

Posted

技术标签:

【中文标题】来自多种数据类型特征的决策树【英文标题】:decision trees from features of multiple datatypes 【发布时间】:2016-04-13 19:01:51 【问题描述】:

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

在构建决策树时,整数特征被转换 漂浮。

例如:如果 A 是一个只能具有 1-12 整数值的特征,则树中会出现诸如“A

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

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

【问题讨论】:

通常在构建决策树之前对分类特征使用一种热编码。你在用熊猫吗?你想要一个例子吗? 不,我没有使用 Pandas。我想要一个例子。谢谢 【参考方案1】:

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

使用 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)

【讨论】:

以上是关于来自多种数据类型特征的决策树的主要内容,如果未能解决你的问题,请参考以下文章

决策树

决策树(decision tree)

第三章 决策树

决策树

决策树算法总结

决策树