Code Monkey home page Code Monkey logo

black_friday_app's Introduction

Predicción de ventas para el Black Friday

Problema

Ir a pasos

Un alto directivo de la empresa X está solicitando a nuestro equipo de ingenieros desarrollar un sistema que permita predecir información relevante para el próximo Blackfriday que se llevará a cabo en noviembre 23 del 2018, tomando como base los datos de ventas del blackfriday del año pasado que se llevó a cabo en noviembre 24 2017.

El sistema debe ser capaz de responder las siguientes preguntas de forma gráfica y tabular (en tablas):

  1. Unidades que se venderán por producto.
  2. Total de ventas (valor de ventas) por producto en pesos.
  3. Top de compradores.
  4. ¿Nos comprarán más las personas solteras o las personas casadas? (en el dataset asumimos casadas como 1).
  5. ¿Nos comprarán más los hombres o las mujeres?
  6. Clasifique por edades, que producto que se venderá más.

Para calcular los pesos se debe predecir el valor del dólar efectuando una regresión con los datos de dataset: TRM_Historico.xls

  • Se recomienda la librería Bokeh

Requerimientos

  • El sistema debe usar ML para resolver las preguntas.
  • Django 2.1 y Python 3.7 (librerías de ML)
  • Postgress, en caso de requerir el uso de una BD

Observaciones

TRM

La TRM es la Tasa Representativa del Mercado cambiario de Colombia y representa el valor que tiene un dólar estadounidense en pesos colombianos.

Limitantes

  • Detalle del crecimiento de la población: Esta predicción no toma en cuenta nuevos usuarios ni el crecimiento de la población de usuarios que accedio a la tienda en el último año. Se asume que no disminuirá el tamaño de la población.

Versión de Django

Se actualiza la versión del framework Django a la 2.1.2 debido a que en la versión 2.1 se reporto recientemente un fuerte problema de seguridad.

Base de datos

Por rapidez se trabaja con sqlite, ya que solo se requiere para guardar el archivo de datos csv.

Solución

1. Predicción del valor del dolar

Vamos a realizar una regresión lineal con los datos de dataset: TRM_Historico.xls para predecir el valor del dolar el día 23-nov-2018, día en que se realizará el evento.

2. Exploración del dataset black friday

Vamos a explorar el conjunto de datos BlackFriday.csv para conocer los datos y encontrar relación entre ellos. Esto nos permite saber:

  • Tamaño del data set
  • Cantidad y nombre de las caracteristicas
  • Tipos de datos
  • Valores nulos
  • Identificar nuestro target

3. preprocesar los datos

De la exploración de datos identificamos las siguientes variables del conjunto:

  • User_ID: identificador del usuario. Variable tipo int.
  • Product_ID: identificador del producto. Se utiliza como característica sin procesar.
  • Gender: Genero del usuario. Se convierte en una variable binaria.
  • Age: Rango de edad del usuario. Se normaliza a variable tipo int.
  • Occupation: id de la ocupación del usuario. Variable tipo int.
  • City_Category: Categoria de la ciudad. Se usa la codificación One-Hot.
  • Stay_In_Current_City_Years: Número de años que ha estado en la ciudad. Se normaliza a variable tipo int.
  • Marital_Status: Estado civil. Es una variable binaria.
  • Product_Category_1: Categoria del producto. Variable tipo int.
  • Product_Category_2 y Product_Category_3: Son categorias del producto. Tienen valores nulos y no es significativa para la predicción, por lo que la eliminaremos del conjunto de datos
  • Purchase: precio de la compra del producto. Variable tipo int. Nuestro TARGET

Variables a generar:

  • user_count: cantidad de registros de compra de cada usuario.
  • Product_count: cantidad de registros de compra de cada producto.
  • Product_mean: cantidad promedio de compra de cada producto.
  • user_high: Proporción de veces que el usuario compra productos a un monto mayor que el monto promedio de compra del producto.

Para preprocesar los datos lo primero es normalizarlos:

gender_dict = {'F':0, 'M':1}
age_dict = {'0-17':0, '18-25':1, '26-35':2, '36-45':3, '46-50':4, '51-55':5, '55+':6}
city_dict = {'A':0, 'B':1, 'C':2}
stay_city_years_dict = {'0':0, '1':1, '2':2, '3':3, '4+':4}

4. Generar modelos de predicción

Antes de realizar los modelos, separamos el conjunto en datos de entrenamiento y datos de prueba. Se utilizaron modelos de regresión lineal con XGBoost

5. Bringing it all together

Vamos a realizar un backend con django para responder a las preguntas de forma gráfica.

Pasos para ejecutar el proyecto:

  1. Instalar dependencias en un entorno virtual (libre elección)
    pip install -r requirements.txt
  1. Descargar el codigo de la carpeta site_prediction

  2. Hacer migraciones

    python manage.py makemigrations
  1. Correr migraciones
    python manage.py migrate
  1. Correr el proyecto y Cargar conjunto de datos con el formulario.
    python manage.py runserver

black_friday_app's People

Contributors

iris9112 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.