python - Sklearn:仅从每个目标类中获取少量记录
问题描述
我有一个具有多类分类(3 个类)的大型数据集,我想获取数据的子样本,即获取属于每个类的 200 条记录,然后根据该数据,我想拆分数据。
假设 3 个类是cat
, dog
, cow
. 我想对数据子集应用拆分,其中从每个类的大型数据集中选择 200 条记录,cat
以训练 ML 模型。dog
cow
- 猫 - 200 次观察
- 狗 - 200 次观察
- 奶牛 - 200 次观察
这是拆分数据的代码行:
# split data
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify = y, test_size = 0.3,
random_state = 42)
我怎样才能选择X
,y
这样每个班级都有 200 条记录?
解决方案
您可以groupby
在“类”列中,然后您有几个选择:
如果您想随机选择 200 个,请使用
sample
聚合。df.groupby('class').sample(200, random_state=42)
如果不需要改组,则只需要每个的前 200 个,使用
head
聚合。df.groupby('class').head(200)
推荐阅读
- java - continue 语句是否会阻塞它下面的整个代码,即使它在 if 语句中?
- javascript - npm 错误!运行 React 之前出现错误,我无法修复它
- mysql - 在mysql中使用group by时如何获取条件计数?
- mysql - MYSQL - Advice on populating FIELD options from another TABLE COLUMN using ENUM
- amazon-web-services - 使用 FFmpeg 从受保护的 m3u8 直播流中获取屏幕截图
- flutter - 从静态区域获取 ThemeData
- c# - asp.net core: What is the best practice to execute code in a container application for kubernetes
- javascript - React Component from AJAX call
- xml - 如何使用 scala 从数据框创建 XML 字符串
- swift - XCTest 异步函数 Swift