Привет Читатель…

Эта статья посвящена подробному анализу того, как я построил свою модель, используя набор данных под названием Продажи в Черную пятницу. Данные доступны из Kaggle или AnalyticsVidhya.

Основным моментом этой статьи будут технические особенности блокнота Jupyter. Безусловно, существует множество способов улучшить его. Я использовал здесь несколько техник и попытался сделать аналитику красивой и отличной от других.

Примечание.Вы можете получить полный доступ к моему коду Python здесь, а также к подходу, подробной гипотезе, а также точности и алгоритму, который можно выбрать, чтобы дать наиболее точный прогноз, обсуждаемый по ссылке здесь: https://medium.com/@pujasarkar_33472/black-friday-sales-analysis-in-python-b617259db2bb

Черная пятница – неофициальное название пятницы, следующей за Днем благодарения в США, который отмечается в четвертый четверг ноября.

Компании, занимающейся розничной торговлей, необходимо понять покупательское поведение клиентов (в частности, сумму покупки) в отношении различных товаров разных категорий. Они поделились сводкой о покупках различных клиентов для выбранных крупносерийных продуктов за последний месяц. Они хотят построить модель для прогнозирования количества покупок клиентов по различным продуктам, что поможет им создать персонализированное предложение для клиентов по различным продуктам.

В данных поезда содержится почти 5,5 миллиона наблюдений, а в тестовых данных — 2,3 лакха наблюдений.

Соревнование:

Чтобы прогнозировать сумму покупки различных продуктов пользователями по категориям с учетом исторических данных о суммах покупок.

Эту проблему можно классифицировать как задачу регрессии. Ожидается, что наш алгоритм предскажет сумму покупки, которую клиент, как ожидается, потратит в этот день.

1. Добавление изображения:

Первое, что бросается в глаза, если этот код открыть в лаборатории Jupyter, это добавленная картинка.

Jupyter Notebook имеет 4 различных типа ячеек: Код, Уценка, Необработанное NBconvert и Заголовок. Ячейки Markdown, в частности, имеют множество опций, чтобы выделить любой блокнот из общей толпы.

Нужное изображение должно быть загружено в первую очередь. Теперь в ячейку Markdown необходимо добавить код на изображении ниже. Для меня картинка в диске называлась black Friday-predictions-2018.png.

2. Темы Юпитера:

Если вы человек, которому скучно смотреть на белый фон блокнота Jupyter, темы именно для вас. Темы также улучшают представление кода. Вы можете найти больше о темах Jupyter здесь. Приступаем к рабочей части.

Установка

pip install jupyterthemes

Список доступных тем

jt -l

В настоящее время доступны следующие темы: chesterish,grade3, gruvboxd, gruvboxl monokai, oceans16, onedork, solarizedd ,solarizedl.

# selecting a particular theme
jt -t <name of the theme>
# reverting to original Theme
jt -r
  • Вам придется перезагружать Jupyter Notebook каждый раз, когда вы меняете тему, чтобы увидеть эффект.
  • Эти же команды можно также запускать из Jupyter Notebook, поместив «!» перед командой.

3. Заголовки

Опять же, ячейка разметки играет огромную роль, когда дело доходит до заголовков в Jupyter Notebook. Сворачиваемые заголовки позволяют блокноту иметь сворачиваемые разделы, разделенные заголовками. Поэтому, если у вас в блокноте много грязного кода, вы можете просто свернуть его, чтобы не прокручивать его снова и снова.

Кроме того, есть также заголовки, которые можно использовать для разных разделов разного размера.

4. Слайд-шоу

Блокноты — эффективный инструмент для обучения и написания объяснимых кодов. Однако, когда мы хотим представить нашу работу, мы либо показываем весь блокнот (со всеми кодами), либо пользуемся помощью PowerPoint. Уже нет. Блокноты Jupyter можно легко преобразовать в слайды, и мы можем легко выбрать, что показывать, а что скрывать в блокнотах.

Превратить блокноты в слайды можно двумя способами:

1. Встроенная функция слайдов Jupyter Notebook

Откройте новую записную книжку и выберите Вид → Панель инструментов ячеек → Слайд-шоу. Над каждой ячейкой появляется светло-серая полоса, и вы можете настроить слайды.

Теперь перейдите в каталог, в котором находится блокнот, и введите следующий код:

jupyter nbconvert *.ipynb --to slides --post serve
# insert your notebook name instead of *.ipynb

Слайды отображаются на порту 8000. Кроме того, в каталоге будет сгенерирован файл .html, откуда вы также сможете получить доступ к слайдам.

У этих слайдов есть недостаток: вы можете видеть код, но не можете его редактировать. Плагин RISE предлагает решение.

2. Использование подключаемого модуля RISE

RISE — это аббревиатура от Reveal.js — Jupyter/IPython Slideshow Extension. Он использовал reveal.js для запуска слайд-шоу. Это очень полезно, так как также дает возможность запускать код, не выходя из слайд-шоу.

Установка

1 — Использование conda (рекомендуется):

conda install -c damianavila82 rise

2 — Использование pip (менее рекомендуется):

pip install RISE

а затем еще два шага для установки JS и CSS в нужных местах:

jupyter-nbextension install rise --py --sys-prefix
#enable the nbextension:
jupyter-nbextension enable rise --py --sys-prefix

Давайте теперь используем RISE для интерактивного слайд-шоу. Мы снова откроем Jupyter Notebook, который создали ранее. Теперь мы замечаем новое расширение с надписью «Enter/Exit RISE Slideshow».

Нажмите на нее, и все готово. Добро пожаловать в мир интерактивных слайдов.

Образец примера показан ниже:

5. Распечатайте каждый вывод из определенной ячейки

Обычно появляется только последний результат, если в одной ячейке кода записано несколько операторов.

Просто добавьте этот синтаксис, и каждый результат будет напечатан:

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

6. Профилирование фрейма данных pandas

Профилирование – это процесс, который помогает нам понять наши данные, иPandas Profiling – это пакет Python, который делает именно это. Это простой и быстрый способ выполнить исследовательский анализ данных Pandas Dataframe. Панды df.describe() и df.info()functions обычно используются в качестве первого шага в процессе EDA. Однако он дает только очень общий обзор данных и мало помогает в случае больших наборов данных. С другой стороны, функция профилирования Pandas расширяет DataFrame pandas с помощью df.profile_report() для быстрого анализа данных. Он отображает много информации с помощью одной строки кода, а также в интерактивном HTML-отчете.

Полный пакет профилирования панд можно найти здесь: https://github.com/PujaSarkar04/Black-Friday-Sales/blob/master/output.html( Это HTML-файл. Загрузите его.)

Вывод:

After dropping Product category 3, 
  MAE: 2280.9
  RMSE: 3179.6
  RSquare: 0.60
  VIF: 2.5
  Accuracy:60.0 %

Наилучшим алгоритмом машинного обучения была модель дерева решений со среднеквадратичным значением ошибки = 3108 и точностью 61,7 %.

Опять же, это несколько улучшений, которые помогли мне представить этот проект по-другому.

Надеюсь это поможет.

Ваше здоровье!!!