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

Sklearn与Pandas分类器异常:输入不同输出结果却一致

问题解决:KNN分类器输出始终一致的原因及修复方案

核心问题:预测输入未做标准化

你训练模型时对X_train和X_test都用了StandardScaler做标准化,但预测时直接传入原始的[[5, 6, 7, 3]],没有经过相同的scaler转换。KNN是基于距离计算的模型,原始输入和标准化后的训练数据不在同一尺度,模型计算出的距离完全失真,最终大概率每次都预测训练集中占比最高的类别。

修复步骤

1. 对预测输入做标准化

把预测的输入数据用训练时拟合好的scaler做转换,代码修改如下:

# 原预测代码
# y_pred = classifier.predict([[5, 6, 7, 3]])

# 修改后:先标准化输入
input_data = scaler.transform([[5, 6, 7, 3]])
y_pred = classifier.predict(input_data)

2. 检查数据集类别分布

如果修复后还是输出一致,那可能是你的数据集里某个成员ID的出现次数远高于其他(类别不平衡)。可以运行以下代码查看训练集的类别分布:

print(pd.Series(y_train).value_counts())

如果某个ID占比超过50%,KNN在多数情况下会倾向于预测这个类别。这种情况可以尝试:

  • 调整n_neighbors参数,比如调小到3或1,减少多数类的影响
  • 对数据集做重采样(过采样少数类/欠采样多数类)

3. 验证模型性能

建议先在测试集上评估模型的准确率,确认模型本身是否有效:

y_test_pred = classifier.predict(X_test)
from sklearn.metrics import accuracy_score
print(f"测试集准确率:{accuracy_score(y_test, y_test_pred)}")

如果准确率极低,说明模型不适合这个任务,或者数据特征(前4个成员ID)和目标(第5个成员)之间没有明显关联,可能需要换模型(比如分类树、朴素贝叶斯)或者重新设计特征。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:10:47