为什么改组训练数据会影响我的随机森林分类器的准确性?

大熊猫

有人过同样的问题但是由于OP没有发布代码,因此没有给出太多有用的信息。

我遇到了基本上相同的问题,由于某种原因,混洗数据使我的随机森林分类器的准确性大大提高(从45%到94%!)。(就我而言,删除重复项也会影响准确性,但这可能需要再讨论一天)基于我对RF算法工作原理的理解,这确实不应该发生。

我的数据是从几个文件合并而成的,每个文件都包含相同顺序的相同样本。对于每个样本,前三列是单独的输出,但是当前我只关注第一个输出。

合并的数据如下所示。输出(第一列)是有序的并且分布不均匀:在此处输入图片说明

改组后的数据如下所示: 在此处输入图片说明

import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score

TOTAL_OUTPUTS = 3

... (code for merging data and feature engineering)

to_compare = {
    "merged": merged,
    "merged shuffled": merged.sample(frac=1.0),
    "merged distinct": merged.drop_duplicates(),
    "merged distinct shuffled": merged.drop_duplicates().sample(frac=1.0)
}


params = {'n_estimators': 300,
          'max_depth': 15,
          'criterion': 'entropy',
          'max_features': 'sqrt'
          }

for name, data_to_compare in to_compare.items():
    features = data_to_compare.iloc[:, TOTAL_OUTPUTS:]
    y = data_to_compare.iloc[:, 0]
    rf = RandomForestClassifier(**params)
    scores = cross_val_score(rf, features, y, cv=3)
    print(name, scores.mean(), np.std(scores))

输出:

merged 0.44977727094363956 0.04442305341799508
merged shuffled 0.9431099584137672 0.0008679933736473513
merged distinct 0.44780773420479303 0.04365860091028133
merged distinct shuffled 0.8486519607843137 0.00042583049485598673
Bluexm

您正在使用的未经改组的数据表明某些要素的值在某些行中趋于恒定。这导致森林变弱,因为组成森林的所有单个发束都变弱。

要看到这一点,请采取极端的推理;如果其中一个特征在整个数据集中都是恒定的(或者如果您使用此数据集中特征恒定的数据块),则此特征(如果选中)不会带来任何熵变化。因此,永远不会选择此功能,并且树会不合适。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

训练随机森林分类器火花

来自分类Dev

我在随机森林分类器中遇到 Not Fitted 错误?

来自分类Dev

什么是训练准确性和训练损失?为什么我们需要计算它们?

来自分类Dev

随机森林提高准确性

来自分类Dev

随机森林分类器:预测概率的特征重要性

来自分类Dev

为什么训练准确性没有提高?

来自分类Dev

为什么数据增强不能提高CNN中纹理分类的准确性?

来自分类Dev

混排数据行时100%的分类器准确性

来自分类Dev

对于任何分类算法,我们如何修改训练数据集以在少数类上获得更好的准确性?

来自分类Dev

从随机森林分类器中提取树(预测变量)

来自分类Dev

随机森林分类器Matlab v / s Python

来自分类Dev

随机森林分类器Matlab v / s Python

来自分类Dev

处理大数据以执行随机森林分类

来自分类Dev

为什么使用tensorflow2.0的同一数据集的训练准确性和验证准确性会有所不同?

来自分类Dev

获取R中随机森林的准确性

来自分类Dev

为什么我的Tensorflow Keras模型在训练时会输出奇怪的损失和准确性值?

来自分类Dev

为什么即使覆盖了全部方差的99%,PCA之后分类器的准确性也会下降?

来自分类Dev

为什么数据清理会降低准确性?

来自分类Dev

K最近邻分类器-列车测试拆分的随机状态导致不同的准确性得分

来自分类Dev

Tensorflow二进制分类训练的损失不会减少,准确性会保持在50%左右

来自分类Dev

如何在GridSearchCV(随机森林分类器Scikit)上获得最佳估计器

来自分类Dev

如何为随机森林分类器,Ada Boost分类器,Extra Trees分类器访问python scikit学习代码

来自分类Dev

我们如何使用神经网络计算多分类器的准确性

来自分类Dev

随机森林在训练和测试中获得98%的准确性,但在其他情况下总是预测相同的等级

来自分类Dev

为随机森林分类器运行任何BayesSearchCV函数时出错

来自分类Dev

如何在“随机森林分类器”中获取“ predict”预测的类的“ predict_proba”?

来自分类Dev

如何使用随机森林分类器确定用于预测类别的特征值的范围

来自分类Dev

什么代表了 Keras 中训练结果的损失或准确性

来自分类Dev

训练期间输出测试数据的准确性

Related 相关文章

  1. 1

    训练随机森林分类器火花

  2. 2

    我在随机森林分类器中遇到 Not Fitted 错误?

  3. 3

    什么是训练准确性和训练损失?为什么我们需要计算它们?

  4. 4

    随机森林提高准确性

  5. 5

    随机森林分类器:预测概率的特征重要性

  6. 6

    为什么训练准确性没有提高?

  7. 7

    为什么数据增强不能提高CNN中纹理分类的准确性?

  8. 8

    混排数据行时100%的分类器准确性

  9. 9

    对于任何分类算法,我们如何修改训练数据集以在少数类上获得更好的准确性?

  10. 10

    从随机森林分类器中提取树(预测变量)

  11. 11

    随机森林分类器Matlab v / s Python

  12. 12

    随机森林分类器Matlab v / s Python

  13. 13

    处理大数据以执行随机森林分类

  14. 14

    为什么使用tensorflow2.0的同一数据集的训练准确性和验证准确性会有所不同?

  15. 15

    获取R中随机森林的准确性

  16. 16

    为什么我的Tensorflow Keras模型在训练时会输出奇怪的损失和准确性值?

  17. 17

    为什么即使覆盖了全部方差的99%,PCA之后分类器的准确性也会下降?

  18. 18

    为什么数据清理会降低准确性?

  19. 19

    K最近邻分类器-列车测试拆分的随机状态导致不同的准确性得分

  20. 20

    Tensorflow二进制分类训练的损失不会减少,准确性会保持在50%左右

  21. 21

    如何在GridSearchCV(随机森林分类器Scikit)上获得最佳估计器

  22. 22

    如何为随机森林分类器,Ada Boost分类器,Extra Trees分类器访问python scikit学习代码

  23. 23

    我们如何使用神经网络计算多分类器的准确性

  24. 24

    随机森林在训练和测试中获得98%的准确性,但在其他情况下总是预测相同的等级

  25. 25

    为随机森林分类器运行任何BayesSearchCV函数时出错

  26. 26

    如何在“随机森林分类器”中获取“ predict”预测的类的“ predict_proba”?

  27. 27

    如何使用随机森林分类器确定用于预测类别的特征值的范围

  28. 28

    什么代表了 Keras 中训练结果的损失或准确性

  29. 29

    训练期间输出测试数据的准确性

热门标签

归档