随机森林模型训练达标但用户输入预测全错的问题及解决
问题:随机森林测试集准确率超90%,但用户输入预测全错
我用随机森林分类器构建模型,在测试集上的准确率能达到0.91,但现在遇到了核心问题——用用户输入的数据做预测时结果100%错误,且用户输入的列顺序和训练数据集完全一致。
代码如下:
model = RandomForestClassifier() model.fit(X_train, y_train) prediction = model.predict(X_test) acc = accuracy_score(y_test, prediction) # 输出: 0.91 X_test_user = df_user_compounds_1.to_numpy() user_input_predictions_1 = model.predict(X_test_user) # user_input_predictions_1 # 输出: array([0, 0, 0, 0, 0], dtype=int64), 预期应为: array([1, 1, 1, 1, 1],dtype=int64)
我的数据集已完成预处理:
- 无缺失值、无重复值
- 通过RandomOverSampler解决了数据不平衡问题
- 使用MinMaxScaler做特征缩放,所有特征无负值
- 包含11个特征,共7000行数据
后续更新(解决进展)
感谢@ElvinJafarov的建议,补充df_user_compounds_1和X_test的部分数据样例:
由于训练时使用了MinMaxScaler,我意识到用户输入必须遵循和训练集完全一致的缩放逻辑。于是我通过原数据集的df.describe(include="all")获取每个特征的最小值和最大值,将这两行最值数据拼接到用户输入的数据框后,再进行缩放处理:
调整后结果符合预期:前5个样本的预期预测值为1,实际达到了4/5的正确率:
内容的提问来源于stack exchange,提问作者Mariya Ivanova
相关产品推荐
相关产品推荐

