Как я могу разделить набор данных из csv-файла для обучения и тестирования?


Я использую Python, и мне нужно разделить мой .csv импортировал данные в двух частях, обучающий и тестовый набор, например 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

3 4

3 ответа:

Вы можете использовать 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]

Вы должны использовать функцию read_csv () из модуля pandas. Он считывает все ваши данные прямо в фрейм данных, который вы можете использовать в дальнейшем, чтобы разбить ваши данные на train и test. Кроме того, вы можете использовать функцию train_test_split() из модуля scikit-learn.

Лучшая практика и, возможно, более случайная-это

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[~data.index.isin(train.index)]