您如何使用 Scikit learn 预测分类变量和连续变量的组合?

Posted

技术标签:

【中文标题】您如何使用 Scikit learn 预测分类变量和连续变量的组合?【英文标题】:How can you predict a combination of categorical and continuous variables with Scikit learn? 【发布时间】:2021-08-30 19:19:33 【问题描述】:

我有一个包含大量预测变量的数据集,我想用它们来预测一些输出变量。但是,我要预测的一些事情是分类的,而另一些则是连续的;我想预测的事情不是独立的。例如,scikit-learn 是否可以混合分类器和回归器,以便我可以预测和解开这些变量? (我目前正在研究梯度提升分类器/回归器,但可能有更好的选择。)

【问题讨论】:

我投票结束这个问题,因为它与 help center 中定义的编程无关,而是关于 ML 理论和/或方法 - 请参阅 ***.com/tags/machine-learning/info 中的介绍和注意事项跨度> 【参考方案1】:

您当然可以使用 One Hot Encoding 或 Dummy Variable Encoding 将标签转换为数字。有关所有详细信息,请参阅下面的链接。

https://codefires.com/how-convert-categorical-data-numerical-data-python/

顺便说一句,随机森林是一种流行的机器学习模型,通常用于分类任务,这在许多学术论文、Kaggle 竞赛和博客文章中都可以看到。除了分类,随机森林还可以用于回归任务。随机森林的非线性特性可以使它比线性算法更有优势,使其成为一个很好的选择。但是,重要的是要了解您的数据并记住随机森林无法外推。它只能做出先前观察到的标签的平均值的预测。从这个意义上说,它与 KNN 非常相似。换句话说,在回归问题中,随机森林可以做出的预测范围受训练数据中最高和最低标签的限制。在训练和预测输入的范围和/或分布不同的情况下,这种行为会成为问题。这称为协变量偏移,大多数模型都难以处理,尤其是随机森林,因为它无法外推。

https://towardsdatascience.com/a-limitation-of-random-forest-regression-db8ed7419e9f

https://stackabuse.com/random-forest-algorithm-with-python-and-scikit-learn

最后,Scikit-learn 使用 numpy 矩阵作为其模型的输入。因此,所有特征都变成了事实上的数字(如果你有分类特征,你需要将它们转换为数字)。

【讨论】:

【参考方案2】:

我认为没有内置方式。 ClassifierChainRegressorChain 允许您在以后的预测中使用较早的预测作为特征,但正如名称所示,它们假定分类或回归。我想到了两个选项:

    手动将它们修补在一起以完成您想做的事情。例如,使用 ClassifierChain 仅使用独立特征预测每个分类目标,然后将这些预测添加到数据集,然后再使用数字目标训练 RegressorChain

    使用这些类作为定义自定义估算器的基础。在这种情况下,您可能主要关注它们的共同父类_BaseChain。不幸的是,这也使用了一个 estimator 属性,而您需要(至少)两个,一个分类器和一个回归器。

【讨论】:

以上是关于您如何使用 Scikit learn 预测分类变量和连续变量的组合?的主要内容,如果未能解决你的问题,请参考以下文章

Python SciKit Learn 和 Pandas 分类数据

如何在 scikit-learn 中使用交叉验证获得预测概率

如何在 scikit-learn 的管道中对变换参数进行网格搜索

Python Scikit-Learn 库中分类数据的异常值预测

如何使用 scikit learn 确保测试集和训练集具有相同的功能?

scikit-learn:如果经过一次热编码后它的特征少于训练/测试集,如何预测新数据