python - 如何提高随机森林多类分类模型的准确率?

标签 python machine-learning random-forest

我正在研究多类别分类,根据客户的购买行为和人口统计数据将客户分为 3 个不同的类别。我无法完全透露该数据集,但总的来说它包含大约 300 个特征和 50000 行。我尝试过以下方法,但无法达到 50% 以上的准确率:

  1. 调整超参数(我在执行 GridSearchCV 后使用调整后的超参数)
  2. 标准化数据集,然后运行我的模型
  3. 尝试了不同的分类方法:OneVsRestClassifier、RandomForestClassification、SVM、KNN 和 LDA
  4. 我还删除了不相关的功能并尝试运行我的模型
  5. 我的类不平衡,因此我也尝试过使用 class_weight =balanced、使用 SMOTE 进行过采样、下采样和重采样。

我还可以尝试其他方法来提高准确性(我所说的准确性是指 f 分数、精确度和召回率)。

任何帮助将不胜感激。

最佳答案

尝试调整以下参数

n_估计器

这是在进行最大投票或预测平均值之前要构建的树数。树的数量越多,性能越好,但代码也会变慢。您应该选择处理器可以处理的尽可能高的值,因为这会使您的预测更强大、更稳定。由于您的数据量较大,因此每次迭代将花费更多时间,但请尝试此操作。

最大特征

这些是随机森林允许在单个树中尝试的最大特征数。 Python 中有多个选项可用于分配最大特征。其中很少有:

  • 自动/无:这将简单地采用所有有意义的功能
    在每棵树上。这里我们只是不对 个别树。

    sqrt:此选项将计算总数的平方根 个人运行的特点。例如,如果总数 变量有100个,我们只能单独取其中的10个 树。“log2”是 max_features 的另一种类似类型的选项。

    0.2:此选项允许随机森林在单独运行中采用 20% 的变量。我们可以以“0.x”格式分配和值,其中我们 希望考虑 x% 的功能。

min_sample_leaf

叶子是决策树的末端节点。较小的叶子使模型更容易捕获训练数据中的噪声。您可以从一些最小值(例如 75)开始,然后逐渐增加它。查看哪个值您的准确性较高。

关于python - 如何提高随机森林多类分类模型的准确率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53634808/

相关文章:

machine-learning - 随机森林分类器 : feature importance of prediction probability

python - 使用 Pandas 在特定位置创建列

python - 如何在Python中turtle模块的write()函数中插入换行符?

javascript - 确定 Node.js 中加载模块的路径

matlab - 从特征向量分类

Tensorflow tf.losses.cosine_distance 大于 1

python - 无法使用 paramiko 模块 ssh 到远程服务器

python - 是否有任何 python 机器学习库可以返回线性 svm 的系数或几何边距?

algorithm - 在决策树中,如果我有一个有多个分支的节点,我应该使用什么日志基础?

python - 为什么模型的准确率高达 84%,但 AUC 却非常低(13%)?