You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SMOTE重采样导致决策树出现非二元异常阈值的解决咨询

问题:SMOTE重采样后决策树二元特征阈值异常的解决方法

问题背景

  • 未进行重采样时,基于哑变量(由原字符串/非整数的二元特征经get_dummies转换而来)训练的决策树,二元叶节点的阈值为<= 0.5,决策边界解释清晰。
  • 使用SMOTE重采样后,决策树的二元特征出现了非0.5的奇怪阈值,观察发现SMOTE生成的新数据集中,原二元特征不再只有0和1两个取值(非二元的整数特征出现连续数值属于正常情况)。

相关代码

决策树训练代码

X1 = dummies.drop(target1, axis="columns") # 输入变量
Y1 = dummies[target1] # 目标变量

X1_train, X1_test, Y1_train, Y1_test = train_test_split(X1, Y1, test_size= 0.3)

clf1 = DecisionTreeClassifier(max_depth = 3) 
clf1 = clf1.fit(X1_train, Y1_train)
params1 = clf1.get_params()
        
preds1 = clf1.predict(X1_train)
        
clf1.predict_proba(X1_train)

feature_names1 = X1.columns
clf1.feature_importances_

fig1 = plt.figure(figsize = (25,20))
_ = tree.plot_tree(clf1,
                  feature_names = feature_names1,
                  class_names = {0: "No Issue", 
                                 1: "Issue"},
                  filled = True,
                  fontsize = 12)

SMOTE重采样代码

sm = SMOTE(random_state=42)
X_res, Y_res = sm.fit_resample(X_train, Y_train)

重采样完成后,用X_res和Y_res替代上述决策树代码中的X1_train和Y1_train进行模型训练。

疑问与初步想法

想知道是否有办法解决决策树中二元特征阈值异常的问题?

我自己的初步思路是:把0到0.5之间的所有值替换为0.5,0.5到1之间的所有值替换为1,但担心这样操作会导致数据失真。

内容的提问来源于stack exchange,提问作者Max

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:28:00