我用随机森林分类器获得了90%以上的准确率,但我担心其他算法的结果要低得多: A table with the results个 但这并不是主要的担忧.问题是,当我使用用户输入时,预测是A table with the results%错误的.用户输入的列的顺序对应于训练数据集列的位置.

model = RandomForestClassifier()
model.fit(X_train, y_train)
prediction = model.predict(X_test)
acc = accuracy_score(y_test, prediction)   # output: 0.91

X_test_user = df_user_compounds_1.to_numpy()
user_input_predictions_1 = model.predict(X_test_user) # 
user_input_predictions_1    # output: array([0, 0, 0, 0, 0], dtype=int64), but it should be: array([1, 1, 1, 1, 1],dtype=int64) 

有人知道为什么会发生这种事吗?

数据集经过了预处理-没有缺失值,没有重复,它使用RandomOverSsamer进行了平衡,使用MinMaxScaler进行了zoom ,没有负值,并且包含11个要素/7K行.

推荐答案

首先,不同的算法给出不同的准确率是可以接受的.

其次,在你的情况下,可能有几个原因.

  1. 您已按数据比例调整了输入,但未按df_user_compounds_1比例调整
  2. 你的模型可能太合身了
  3. 数据集的预处理方式与DF_USER_COMPOMENTS_1不同

第三,这不是你 Select 模型的方法.你得试一试K-Fold Cross validationn ,hyperparameter tuning

Python相关问答推荐

为什么我的代码会进入无限循环?

Python在通过Inbox调用时给出不同的响应

在Python中,如何才能/应该使用decorator 来实现函数多态性?

根据多列和一些条件创建新列

每个组每第n行就有Pandas

如何将不同长度的新列添加到现有的框架中

从 struct 类型创建MultiPolygon对象,并使用Polars列出[list[f64]列

Tkinter -控制调色板的位置

在for循环中仅执行一次此操作

多处理代码在while循环中不工作

如何将双框框列中的成对变成两个新列

Pytest两个具有无限循环和await命令的Deliverc函数

无法使用requests或Selenium抓取一个href链接

如何请求使用Python将文件下载到带有登录名的门户网站?

在Python中动态计算范围

如何使用scipy的curve_fit与约束,其中拟合的曲线总是在观测值之下?

不允许访问非IPM文件夹

考虑到同一天和前2天的前2个数值,如何估算电力时间序列数据中的缺失值?

在Python中计算连续天数

pandas:对多级列框架的列进行排序/重新排序