Python:根据特定列拆分数据集

时间:2018-12-05 12:03:50

标签: python machine-learning scikit-learn classification

我目前正在尝试建立一个分类模型,为此我正在使用this数据集进行训练和测试。它是从TIMIT数据库中提取的,包含五个不同音素类别的数字化频率。频率在标记为“ x.1”-“ x.256”的256列下,而音素类本身标记为“ g”。此外,还有一个“发言人”列,用于标识不同的发言人。

我的问题是,考虑到“说话者”列,是否可以将此数据集按50:50的比例划分为训练和测试数据?实际上,我想对数据进行划分,以使任何说话者都不在两个集合中,所以我不使用包含训练数据中已经包含的相同说话者的测试数据来验证训练后的模型。

我的方法是使用NumPy从原始数据集中提取所有说话者,并使用stratify的{​​{1}}参数:

train_test_split

但这很可能不是解决方案。非常感谢您为解决此问题提供的帮助!

1 个答案:

答案 0 :(得分:1)

嗨,您可以使用python的pandas库通过以下方式将csv加载到数据框中:

import pandas as pd

df = pd.read_csv(path_to_csv)

然后,您可以通过使用

获得列扬声器的所有唯一值

arrayOfSpeaker = df['speaker'].unique()

现在,您可以轻松地使用arrayOfSpeaker将您的数据分为训练和测试集。 另外,我建议切片之前先将arrayOfSpeaker随机化。

我通常将数据分成70:20:10的比例,用于train:validation:test。我没有明白50:50的比例!