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

测试不同机器学习模型时预测结果完全一致的问题求助

排查不同ML模型预测结果完全一致的问题

嘿,我一看你的问题和代码片段,首先想到几个最可能的原因,咱们一步步来排查:

最可能的元凶:你在用训练集做预测

看你代码里的这行:

predictedDTC_Dog = modelDTC_Dog.predict(df_Dog_X)

你用的是训练模型时的同一套数据df_Dog_X来做预测!对于决策树来说,它会完美拟合训练数据(除非你加了深度、样本分割数这类限制);如果逻辑回归和随机森林也用训练集预测,再加上如果你的数据标签分布极端,很容易出现所有模型预测结果完全一致的情况。

解决办法:立刻拆分训练集和测试集
用train_test_split把数据分成「训练用的子集」和「测试用的独立子集」,模型在训练集上学规律,在测试集上验证效果,这样才能看到不同模型的真实差异:

from sklearn.model_selection import train_test_split
# 按8:2拆分训练/测试集,random_state保证结果可复现
X_train, X_test, y_train, y_test = train_test_split(df_Dog_X, df_Dog_y, test_size=0.2, random_state=42)

# 重新训练并预测(以三个模型为例)
# 决策树
from sklearn import tree
modelDTC_Dog = tree.DecisionTreeClassifier(criterion='gini')
modelDTC_Dog.fit(X_train, y_train)
predictedDTC_Dog = modelDTC_Dog.predict(X_test)

# 逻辑回归
from sklearn.linear_model import LogisticRegression
modelLR_Dog = LogisticRegression(max_iter=1000)  # 增加迭代次数避免不收敛
modelLR_Dog.fit(X_train, y_train)
predictedLR_Dog = modelLR_Dog.predict(X_test)

# 随机森林
from sklearn.ensemble import RandomForestClassifier
modelRF_Dog = RandomForestClassifier(random_state=42)
modelRF_Dog.fit(X_train, y_train)
predictedRF_Dog = modelRF_Dog.predict(X_test)

其他可能的原因及排查步骤

如果拆分数据集后还是结果一致,那咱们继续查:

1. 目标变量(df_Dog_y)分布极端不平衡

比如99%的样本都是「被领养」或者「未被领养」,那所有模型都会优先预测占比最高的类别,自然结果一致。
排查代码:

print("目标变量类别占比:")
print(df_Dog_y.value_counts(normalize=True))

如果确实不平衡,可以给模型加class_weight='balanced'参数,或者用SMOTE这类方法做数据增强。

2. 特征完全没有区分度

如果你的df_Dog_X里的特征都是常量(比如所有样本的「动物类型」都是狗),或者和目标变量完全不相关,那所有模型都学不到有效规律,只能做出相同的默认预测。
排查代码(以决策树特征重要性为例):

import pandas as pd
# 查看决策树的特征重要性
feature_importance = pd.DataFrame({
    '特征名称': df_Dog_X.columns,
    '重要性': modelDTC_Dog.feature_importances_
}).sort_values('重要性', ascending=False)
print(feature_importance)

如果所有特征的重要性都接近0,那你得重新选特征或者构造新特征(比如把「收容时长」「动物年龄」这类变量做处理)。

3. 模型参数设置过于保守

比如你给决策树设了max_depth=1,给逻辑回归加了极强的正则化C=0.001,给随机森林设了n_estimators=1,这些极端参数会让模型的拟合能力被严重限制,导致它们的决策边界高度相似。
解决办法:放开参数限制,比如给决策树设max_depth=5,逻辑回归用默认C=1.0,随机森林设n_estimators=100,再试试效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:45:44