如何对任意数量的分类变量进行分层K折拆分?

我有一个名为 df 的数据框,格式如下:

    cat_var_1    cat_var_2     num_var_10    Orange       Monkey         341    Banana        Cat           562    Orange        Dog           223    Banana       Monkey          6..

假设数据集中 cat_var_1 的可能值及其比例为 [‘Orange’: 0.6, ‘Banana’: 0.4],而 cat_var_2 的可能值及其比例为 [‘Monkey’: 0.2, ‘Cat’: 0.7, ‘Dog’: 0.1]。

如何将数据拆分为训练集、测试集和验证集(60:20:20 的比例),同时保持分类变量的比例不变?在实际操作中,这些变量的数量可以是任意数量,而不仅仅是两个。此外,很明显,精确的比例在实践中可能无法完全实现,但我们希望尽可能接近这些比例。

我已经查看了 sklearn 中描述的 StratifiedKFold 方法:如何将数据集拆分为训练集和验证集,同时保持类别之间的比例?,但这种方法仅限于基于一个分类变量进行评估。

另外,如果您能提供您所实现的解决方案的复杂度,我将不胜感激。


回答:

您可以将 df.cat_var_1+ "_" + df.cat_var_2 传递给 StratifiedShuffleSplit.split() 的参数 y

但这里有一个使用 DataFrame.groupby 的方法:

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注