сбой компьютера при выполнении расчетов на больших наборах данных на python с использованием Dask - PullRequest
0 голосов
/ 25 декабря 2018

Я не могу выполнять вычисления на больших наборах данных с помощью python-Dask.Мой компьютер дает сбой.

У меня есть компьютер с 4 ГБ ОЗУ и Linux Debian.Я пытаюсь загрузить некоторые файлы из соревнования Kaggle (соревнования ElO Merchant). Когда я пытаюсь загрузить и получить форму фрейма данных dask, компьютер вылетает.

Я запускаю код только на моем ноутбуке.Я выбрал dask, потому что он может обрабатывать большие наборы данных.Я также хотел бы знать, может ли Dask перенести вычисления на мой жесткий диск, если он не помещается в памяти?Если это так, мне нужно активировать такую ​​вещь или dask автоматически делает это?Если мне нужно сделать это вручную, как мне это сделать?Если у вас есть учебник по этому вопросу, это было бы замечательно.

В качестве жесткого диска у меня есть твердотельный накопитель емкостью 250 ГБ.Следовательно, было бы место для большого набора данных, чтобы поместиться на диск.

Пожалуйста, помогите мне в этом отношении.Мой код, как показано ниже.

Спасибо

Майкл

import dask.dataframe as dd
from dask.distributed import Client
from sklearn.externals.joblib import parallel_backend
client = Client(processes=False)

merchant = dd.read_csv('/home/michael/Elo_Merchant/merchants.csv')
new_merchant_transactions = dd.read_csv('/home/michael/Elo_Merchant/new_merchant_transactions.csv')
historical_transactions = dd.read_csv('/home/michael/Elo_Merchant/historical_transactions.csv')
train = dd.read_csv('/home/michael/Elo_Merchant/train.csv')
test = dd.read_csv('/home/michael/Elo_Merchant/test.csv')

merchant.head()
merchant.compute().shape
merchant_headers = merchant.columns.values.tolist()

for c in range(len(merchant_headers)): 
    print(merchant_headers[c])
    print('--------------------')
    print("{}".format(merchant[merchant_headers[c]].value_counts().compute()) + '\n')
    print("Number of NaN values {}".format(merchant[merchant_headers[c]].isnull().sum().compute()) + '\n')

historical_transactions.head()
historical_transactions.compute().shape #after computing for a few minutes computer restarts.

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

1 Ответ

0 голосов
/ 28 декабря 2018

Я нашел способ получить это.Вот оно:

print("(%s,%s)" % (historical_transactions.index.count().compute(),len(historical_transactions.columns)))

Первое выходное значение - это строки, а второе выходное значение - это число столбцов.

Спасибо

Майкл

...