如何查看train_test_split划分后训练与测试集的各类样本数量?
查看多分类音频数据集划分后的各类样本数量
你可以通过将独热编码标签转回原始类别,再统计各集合的类别分布来实现需求。以下是适配你现有代码的具体实现:
步骤说明
- 还原原始类别标签:利用已初始化的
MLB(MultiLabelBinarizer)的inverse_transform方法,把划分后的Y_train、Y_val、Y_test从独热编码格式转回原始类别。 - 统计类别样本数:用
pandas的统计函数分别计算训练集、验证集、测试集的各类样本数量。 - 生成对比表格:合并统计结果,输出你需要的结构化表格。
具体代码
在你现有代码的最后(打印各集合shape之后)添加以下代码:
import pandas as pd # 将独热编码转回原始类别(单标签场景下取每个结果的第一个元素) train_labels = [label[0] for label in MLB.inverse_transform(Y_train)] val_labels = [label[0] for label in MLB.inverse_transform(Y_val)] test_labels = [label[0] for label in MLB.inverse_transform(Y_test)] # 统计各集合的类别数量 train_counts = pd.Series(train_labels).value_counts().sort_index() val_counts = pd.Series(val_labels).value_counts().sort_index() test_counts = pd.Series(test_labels).value_counts().sort_index() # 合并成对比表格,缺失类别填充0并转为整数 distribution_df = pd.DataFrame({ '训练集样本数': train_counts, '验证集样本数': val_counts, '测试集样本数': test_counts }).fillna(0).astype(int) # 输出结果 print(distribution_df)
输出示例
运行后会得到类似如下的结构化表格:
| 类别 | 训练集样本数 | 验证集样本数 | 测试集样本数 |
|---|---|---|---|
| a | 30 | 3 | 5 |
| b | 20 | 5 | 10 |
| c | 25 | 2 | 5 |
| silence | 40 | 4 | 6 |
补充说明
- 若未安装
pandas,先执行pip install pandas完成安装。 sort_index()用于让类别按你定义的classes顺序排列;fillna(0)处理某些类别在某集合中无样本的情况。
内容的提问来源于stack exchange,提问作者A. Gehani
相关产品推荐
相关产品推荐

