如何从 .csv 文件中拆分数据集以进行训练和测试?

Posted

技术标签:

【中文标题】如何从 .csv 文件中拆分数据集以进行训练和测试?【英文标题】:How can I split a Dataset from a .csv file for Training and Testing? 【发布时间】:2017-09-27 13:52:12 【问题描述】:

我正在使用 Python,我需要将我的 .csv 导入数据分成两部分,一个训练集和测试集,E.G 70% 训练和 30% 测试。

我不断收到各种错误,例如'list' object is not callable 等等。

有什么简单的方法吗?

谢谢

编辑:

代码是基本的,我只是想拆分数据集。

from csv import reader
with open('C:/Dataset.csv', 'r') as f:
    data = list(reader(f)) #Imports the CSV
    data[0:1] ( data )

TypeError: 'list' object is not callable

【问题讨论】:

有很多方法可以实现这一点,但如果没有看到您的代码,特别是很难提供帮助。 请发布代码和完整的错误。 将代码添加到帖子中。 【参考方案1】:

你可以使用pandas:

import pandas as pd
import numpy as np

df = pd.read_csv('C:/Dataset.csv')
df['split'] = np.random.randn(df.shape[0], 1)

msk = np.random.rand(len(df)) <= 0.7

train = df[msk]
test = df[~msk]

【讨论】:

效果很好!谢谢! 工作完美,但你能告诉我如何在 .csv 文件中编写这个训练和测试数据吗...?? @DeepakChawla train.to_csv('train.csv', index=False) 与测试相同。 输出文件没有准确的百分比?如果我的数据集大小为 100,则它不会返回 70 行。每次它返回不同的行数,但不是 70。【参考方案2】:

更好的做法,也许更随机的是使用df.sample

from numpy.random import RandomState
import pandas as pd

df = pd.read_csv('C:/Dataset.csv')
rng = RandomState()

train = df.sample(frac=0.7, random_state=rng)
test = df.loc[~df.index.isin(train.index)]

【讨论】:

【参考方案3】:

您应该使用 pandas 模块中的 read_csv () 函数。它将所有数据直接读取到数据框中,您可以进一步使用该数据框将数据分解为训练和测试。同样,您可以使用 scikit-learn 模块中的 train_test_split() 函数。

【讨论】:

以上是关于如何从 .csv 文件中拆分数据集以进行训练和测试?的主要内容,如果未能解决你的问题,请参考以下文章

如何拆分自己的数据集以在 Tensorflow CNN 中进行训练和验证

如何将数据集 (csv) 拆分为训练和测试数据

如何按百分比将 CSV 数据集拆分为训练集和测试集,并将拆分后的数据集与 pandas 一起保存到本地文件夹中? [复制]

如何将多个 CSV 数据集以适合 Keras 中的模型?

如何在不拆分数据帧的情况下传递不同的数据集进行训练和测试。 (Python)?

时间序列数据中 LSTM 训练测试拆分中的问题