Data Science: Pandas, Numpy, Matplotlib y Scikit-learn

Development

Curso
Especialización en Python (EOI)
Módulo
Data Science
Tecnologías
Pandas, Scikit-learn, Numpy, Matplotlib

Data Science con Python, usando Pandas, Matplotlib y Scikit-learn

Este proyecto sobre Data Science fue uno de los más divertidos de realizar. Se trató de limpiar un dataset y analizarlo, usando para ello principalmente Pandas, Matplotlib y Machine Learning.

 

data science
Pandas datasete.describe()

Nos proporcionan un csv con valores para el id, TV, radio, newspaper y sales, con un total de 210 filas. Nos indican que tenemos que limpiar el dataset, hacer varias representaciones usando Matplotlib y seaborn y realizar varios modelos usando scikit-learn, la famosa librería de Machine Learning.

Para realizar todas estas operaciones, usamos un “notebook” de jupyter lab, que permite ejecutar código python a la vez que vas realizando anotaciones usando markdown. Puedes verlo en mi github.

Proyecto Data Science

 

Proyecto Data Science: Instrucciones

La tarea consiste en analizar y explorar un conjunto de datos sencillo, utilizando las herramientas vistas en clase: numpy, pandas, matplotlib, seaborn, scikit-learn, etc.

El conjunto de datos está en formato CSV, y se puede descargar aquí.

Cada fila del conjunto de datos describe una campaña de marketing con la cantidad de dinero que una empresa no especificada ha empleado en tres canales diferentes: televisión, radio y prensa, además de una última columna que lista las ventas conseguidas en dicha campaña. Las columnas TV, radio y newspaper indican la cantidad de dinero invertida en miles de euros, mientras que la columna sales indica miles de unidades vendidas.

Paso 1

  • Limpiar el conjunto de datos de aquellas filas en las que falten datos o haya valores extraños o fuera de rango (recordemos pandas.DataFrame.describe())
  • Crear tres scatter plots (o uno solo con tres subplots) con los ejes debidamente etiquetados, donde el eje X es la cantidad de dinero invertida en ese canal, y el eje Y representa el número de unidades vendidas
  • [OPCIONAL] Utilizar plotting alternativo, como por ejemplo seaborn.regplot(); este incluye automáticamente una recta de regresión sobre los datos y unos intervalos de confianza ajustables
  • [OPCIONAL] Investigar acerca del coeficiente de correlación de Pearson (por ejemplo aquí y aquí), calcularlo y mostrarlo sobre los plots. La funcion numpy.corrcoef() es útil para esto

El resultado debe ser similar a esto:

Paso 2

Aumentar el dataset con las siguientes dos columnas generadas:

  • Cantidad total invertida por venta, es decir, coste total (entre los tres canales) dividido por el número de ventas
  • Un valor booleano (true/false, o 0/1) que indique si la campaña de marketing fue exitosa. Una campaña es considerada exitosa si se cumplen ambas condiciones siguientes:
    • Cantidad total invertida por venta es menos de 20€
    • Más de 15000 unidades fueron vendidas

Responder a la pregunta: ¿Cuántas campañas fueron exitosas?

Paso 3

  • Crear un conjunto de entrenamiento seleccionando las filas con id <= 160
  • Entrenar un clasificador Gaussian Naive-Bayes como vimos en clase para determinar si una campaña será exitosa, dadas las cantidades empleadas en cada canal de marketing
  • Calcular la fracción del conjunto de entrenamiento que es clasificado correctamente.
  • [OPCIONAL] Utilizar clasificadores alternativos, tales como regresión logística (enlace, enlace) o random forest (enlace, enlace)

Paso 4

  • Crear un conjunto de prueba seleccionando las filas con id > 160
  • Evaluar el rendimiento del clasificador de la siguiente manera:
    • ¿Qué porcentaje del conjunto de prueba fue clasificado correctamente (aciertos sobre el total)? Es deseable que este número llegue al menos al 80%
    • ¿Cuál es la proporción de falsos positivos y falsos negativos?

Criterios de evaluación

En orden de importancia, se evaluará la entrega acorde a los siguientes puntos:

  1. Implementación de los puntos obligatorios en los cuatro pasos
  2. Correctitud de los datos obtenidos
  3. Implementación de los puntos opcionales
  4. Organización y limpieza del código
Esta web usa cookies propias y de terceros para su correcto funcionamiento. Al hacer click en el botón de aceptar, acepta su uso.    Más información
Privacidad