我目前正在尝试构建一个分类模型,并使用该数据集进行训练和测试。它是从TIMIT数据库中提取的,包含五个不同音素类的数字化频率。频率在标记为"x.1"-"x.256"的256列下,而音素类本身标记为"g"。此外,还有一个"发言人"栏,用于识别不同的发言人。
我的问题是,考虑到演讲者列,是否有可能将这个数据集划分为训练和测试数据的50:50比例?事实上,我想划分数据,这样任何说话者都不在两个集合中,这样我就不会用包含训练数据中已经存在的相同说话者的测试数据来验证训练模型。
我的方法是使用NumPy从原始数据集中提取所有说话者,并使用train_test_split
:的stratify
参数
X_train, X_test, y_train, y_test = train_test_split(input_data, phonemes, random_state=42, test_size=0.5, stratify=speakers)
但这很可能不是解决方案。如果能为我解决这个问题提供任何帮助,我将不胜感激!
Hi您可以使用python的pandas库通过将csv加载到数据帧中
import pandas as pd
df = pd.read_csv(path_to_csv)
然后您可以使用获得列扬声器的所有唯一值
arrayOfSpeaker = df['speaker'].unique()
现在,您可以轻松地使用arrayOfSpeaker将数据拆分为训练集和测试集。此外,我建议在切片数组之前先随机化arrayOfSpeaker。
我通常将数据分成70:20:10的比例,用于训练:验证:测试。我没有达到50:50的得分!