Как использовать разделенный большой набор данных в наборе поездов / тестов, а также использовать итерации pandas batchsize для обновления - PullRequest
0 голосов
/ 24 апреля 2019

Я обновляю свои параметры каждую итерацию пакетом из очень большого файла.Но прежде чем я сделаю это, я хочу разделить весь большой набор данных на тест и набор поездов.И с перекрестной проверкой я хочу сделать то же самое.

Я пытался использовать dask, чтобы разделить весь набор, а затем преобразовать часть в pandas, чтобы использовать пакеты для обновления моего алгоритма.

часть напитка (которую я, по возможности, предпочел бы не использовать):

dict_bag=dff.read_csv("gdrive/My Drive/train_triplets.txt",  blocksize=int(1e9),sep='\s+',header=None)
df_train, df_test = df_bag.random_split([2/3, 1/3], random_state=0)
df_batch=df_train.loc[1:1000].compute()

часть панд:

df_chunk = pd.read_csv("gdrive/My Drive/train_triplets.txt", chunksize=6000000,sep='\s+',header=None)
for chunk in df_chunk:

####    here I have my algorithm 

Я ожидаю, что возможно иметьфункция pandas для создания pd-файла с размерами фрагментов из URL-адреса, как у меня уже есть, но затем разделяется на поезд и набор тестов.Так что я могу перебирать партии по большому поезду и тестировать индивидуально.И поэтому я также могу разделить набор поездов для выполнения перекрестной проверки.

Редактировать: Мой Dataframe является считывателем текстового файла, как мне получить набор поездов и тестов из этого и / или я могу выполнить перекрестную проверку

1 Ответ

0 голосов
/ 27 апреля 2019

Вы можете использовать метод dask.dataframe.random_split .

50/50 split

>>> a, b = df.random_split([0.5, 0.5])

80/10/10, напримердля поезда / теста / проверки

>>> a, b, c = df.random_split([0.8, 0.1, 0.1], random_state=123)
...