gpt4 book ai didi

python - 处理 sklearn.tree.DecisionTreeClassifier 中的连续变量

转载 作者:行者123 更新时间:2023-12-02 03:05:02 26 4
gpt4 key购买 nike

我很好奇sklearn如何处理sklearn.tree.DecisionTreeClassifier中的连续变量?我尝试使用一些连续变量而不使用 DecisionTreeClassifier 进行预处理,但它获得了可接受的精度。

下面是一种将连续变量转换为分类变量的方法,但它无法获得相同的精度。

def preprocess(data, min_d, max_d, bin_size=3):

norm_data = np.clip((data - min_d) / (max_d - min_d), 0, 1)
categorical_data = np.floor(bin_size*norm_data).astype(int)
return categorical_data


X = preprocess(X, X.min(), X.max(), 3)

最佳答案

决策树在最能区分两个类的地方分割连续值。例如,决策树会将男性和女性的高度划分为 165 厘米,因为大多数人都会按照此边界正确分类。算法会发现大多数女性高度在165厘米以下,而大多数男性高度在165厘米以上。

决策树会找到所有属性的最佳 split 点,通常会多次重用属性。请参阅此处,决策树根据列中的连续值对 Iris 数据集进行分类。

例如,您可以看到 X[3] < 0.8 ,其中某些列中低于 0.8 的连续值被分类为类 0。您可以看到此分割适用于每个类中的多少个实例:[50, 0, 0] .

enter image description here您的任意分割点的准确性可能较低,因为这样做会丢失信息。关于高度示例,想象一下,如果您的高度数据不连续,但有人高度高于或低于 150 厘米。你正在丢失很多信息。决策树也会像这样分割连续数据,但至少它会 1)找到最佳分割点,2)它将能够多次分割相同的属性。所以它会比你任意的分割表现得更好。

关于python - 处理 sklearn.tree.DecisionTreeClassifier 中的连续变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59231642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com