@lolaevv
В процессе изучения азов JAVA

Как оптимизировать работу в JupyterNotebook?

Доброго времени суток.
Прохожу на Stepik курс по machine learning и столкнулся с довольно неприятной проблемой.
Во время подготовки данных конечный датафрейм разросся до небывалых размеров 5ef83bf62a9fa742889856.jpeg

Есть ли какая-то возможность оптимизировать использование ресурсов компьютера, а то работать невозможно. При запуске ячейки комп просто зависает. Даже для того, чтобы вывести сообщение на скриншоте компьютер довольно сильно залагал.

Комп имеет старенький intel core i3 и 8гб ddr3. Или всё-таки надо менять комплектующие?
  • Вопрос задан
  • 104 просмотра
Решения вопроса 2
DanilBaibak
@DanilBaibak
Machine Learning engineer
Первым делом посмотрите, как используется память:
df.memory_usage(deep=True)

А дальше оптимизируйте тип каждой колонки:
  • Для категориальных данных:
    df['object'].astype('category')

  • user_id и days, например, должны быть int type
  • ну и float64 вам скорее всего тоже не нужен. Достаточно float32 , а иногда и float16
Ответ написан
Комментировать
Можно использовать популярный скрипт reduce_mem_usage например отсюда. Он проверяет переменной какого типа достаточно чтобы описать минимальное и максимальное значение в колонке и преобразует тип. Предварительно нужно преобразовать целочисленные колонки в int64. Или загуглите и найдите вариант скрипта, который лучше подойдет, в сети море подобных скриптов с небольшими вариациями, в том числе с обработкой NaN, автоматической проверкой на целочисленность данных и т.п.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@lolaevv Автор вопроса
В процессе изучения азов JAVA
Изменил тип одной из колонок с float64 на int через df.step_id.astype(int) и использование памяти уменьшилось с 4gb+ до 3,4gb . Правда комп был абсолютно неработоспособным 15 минут, пока выполнялись операции по изменению типа столбца
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы