python - Pandas 基于多列的分层抽样
问题描述
我有一个看起来像这样的熊猫数据框:
| Cliid | Segment | Insert |
|-------|---------|--------|
| 001 | A | 0 |
| 002 | A | 0 |
| 003 | C | 0 |
| 004 | B | 1 |
| 005 | A | 0 |
| 006 | B | 0 |
我想将其分成 2 组,使每个组在 [Segment, Insert] 中具有相同的每个变量的组成。例如,每个组将有 1/2 的观测值属于分段 A,1/6 的 Insert = 1,依此类推。
我已经检查了这个答案,但它只对一个变量进行分层,它不会对多个变量起作用。
R 有这个功能可以做到这一点,但使用 R 不是一种选择。
顺便说一句,我使用的是 Python 3。
解决方案
您可以使用 sklearn 的train_test_split函数,包括stratify
可用于确定要分层的列的参数。
例如:
from sklearn.model_selection import train_test_split
df_train, df_test = train_test_split(df1, test_size=0.2, stratify=df[["Segment", "Insert"]])
推荐阅读
- css - 调整窗口大小时 CSS 滚动捕捉是否总是中断?
- machine-learning - 将逻辑回归模型拟合到 MNIST 数据需要很长时间
- python - 如何将节点放置在特定位置 - networkx
- c# - Xero 会计发票对象未设置为参考
- javascript - 如何用函数链中的空字符串替换数据库中的空值
- scala - 在 scala 中,为什么 Range.hashCode() 这么慢并且不能更快?
- algorithm - 给定二维坐标系中的一组点,如果我们只访问所有点一次,如何计算最小距离和路径?
- excel - Excel-更改表格数据以规范化数据
- dotnet-cli - EF Core 2.2 脚手架现有数据库和延迟加载
- vue-select - 在外部更改 v-model 道具时更新 vue-select 组件