【问题标题】:Python: Split data set according to specific columnPython:根据特定列拆分数据集
【发布时间】:2019-05-06 23:58:08
【问题描述】:

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

我的问题是,考虑到扬声器列,是否可以将此数据集拆分为 50:50 比例的训练和测试数据?事实上,我想对数据进行划分,以使任何说话人都不在两组中,这样我就不会使用包含训练数据中已经存在的相同说话人的测试数据来验证训练模型。

我的方法是使用 NumPy 从原始数据集中提取所有说话者,并利用 train_test_splitstratify 参数:

X_train, X_test, y_train, y_test = train_test_split(input_data, phonemes, random_state=42, test_size=0.5, stratify=speakers)

但这很可能不是解决方案。对于解决此问题的任何帮助,我将不胜感激!

【问题讨论】:

    标签: python machine-learning scikit-learn classification


    【解决方案1】:

    您好,您可以使用 python 的 pandas 库通过使用将 csv 加载到数据框中

    import pandas as pd

    df = pd.read_csv(path_to_csv)

    那么你就可以通过使用得到列speaker的所有唯一值

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

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

    我通常将数据拆分为 70:20:10 的比例,用于训练:验证:测试。我没明白 50:50 分开的意义!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-01
      • 2019-03-06
      • 2023-02-16
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      相关资源
      最近更新 更多