您如何使用 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】:我认为没有内置方式。 ClassifierChain
和 RegressorChain
允许您在以后的预测中使用较早的预测作为特征,但正如名称所示,它们假定分类或回归。我想到了两个选项:
手动将它们修补在一起以完成您想做的事情。例如,使用 ClassifierChain
仅使用独立特征预测每个分类目标,然后将这些预测添加到数据集,然后再使用数字目标训练 RegressorChain
。
使用这些类作为定义自定义估算器的基础。在这种情况下,您可能主要关注它们的共同父类_BaseChain
。不幸的是,这也使用了一个 estimator
属性,而您需要(至少)两个,一个分类器和一个回归器。
【讨论】:
以上是关于您如何使用 Scikit learn 预测分类变量和连续变量的组合?的主要内容,如果未能解决你的问题,请参考以下文章
Python SciKit Learn 和 Pandas 分类数据
如何在 scikit-learn 中使用交叉验证获得预测概率
如何在 scikit-learn 的管道中对变换参数进行网格搜索
Python Scikit-Learn 库中分类数据的异常值预测