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

为何使用y与y.values时DecisionTreeClassifier准确率差异巨大?

为何使用y.values划分数据集会导致决策树模型准确率骤降?

问题场景

在使用DecisionTreeClassifier训练模型时,出现了两种标签输入方式下准确率差异巨大的情况:

  • 使用原始DataFrame列作为标签,测试集准确率达100%
  • 将标签转为一维数组(y.values)后,测试集准确率降至75%

准确率100%的训练代码

X = new_df.drop('salary_more_then_100k', axis='columns')
y = new_df.salary_more_then_100k
X_train, X_test, y_train, y_test = train_test_split(X, y)
Tree = DecisionTreeClassifier()
Tree.fit(X_train,y_train)

准确率75%的训练代码

X_train, X_test, y_train, y_test = train_test_split(X, y.values)

核心原因

问题的根源在于train_test_split的拆分逻辑:

  • 当传入X(DataFrame)和y(Series)时,两者带有一致的索引,train_test_split会基于索引同步打乱并拆分,保证每一条特征都对应正确的标签,模型训练和测试的数据匹配度完全没问题,因此能达到正常的准确率。
  • 而y.values是剥离了索引的一维numpy数组,此时train_test_split会把X和y.values视为两个独立的数据集,分别进行随机拆分——这直接破坏了特征与标签的对应关系,训练时用的特征和标签可能完全不匹配,测试时自然无法正确预测,准确率也就大幅下降。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:19:54