根据分类列拆分训练和测试集

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据分类列拆分训练和测试集相关的知识,希望对你有一定的参考价值。

我有一个包含大约25000行和32列的数据框。我想将此数据集分为训练和测试测试(80/20)。但是,某些列是1热编码的。现在,当分割数据时,我希望将每个1-hot编码列的相同比例放入训练集中。

col_1     col_2   ..  col_31    col_32
  1          0         0         0
  1          0         0         0
...
  0          0         1         0
  0          0         1         0

因此,在训练集中,应该有80%的行,其中每一列等于1。我从Sci-kit学习中了解了不同的拆分方法,但是找不到能够满足我需要的拆分方法。有没有人提供解决方案或者可以帮助我的人?​​

答案

初始化大熊猫框

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split

df = pd.DataFrame(np.random.randint(0,2, size=(100, 32)))

设置1热编码=真/假

df['1-hot-encoded'] =  df.apply(lambda row: True if np.count_nonzero(row) == 1 else False, axis=1)

在保持1-热编码比率的同时分割

train, test = train_test_split(df, test_size=0.2, stratify=df['1-hot-encoded'])

希望这会有所帮助

以上是关于根据分类列拆分训练和测试集的主要内容,如果未能解决你的问题,请参考以下文章

垃圾邮件分类

朴素贝叶斯应用:垃圾邮件分类

朴素贝叶斯应用:垃圾邮件分类

朴素贝叶斯应用:垃圾邮件分类

朴素贝叶斯应用:垃圾邮件分类

朴素贝叶斯应用:垃圾邮件分类