Capítulo 8 Continuous integration CI
Para identificar los posibles bugs lo más antes posible que se pueda, verificar de manera más o menos automática que nuestro código hace lo que se supone debe hacer y permitir que nuevos usuarios entiendan lo que hace nuestro código, implementamos los siguientes test para probar la funcionalidad de nuestro código y las suposiciones de las cuáles partimos al momento de trabajar con los datos: unit tests.
8.1 Supuestos
Supuestos del clean
Supuesto 1: La fecha de cierre de service request es posterior o igual a la fecha de creación del service request.
Supuesto 2: De acuerdo con la API de dónde se extrajeron los datos, los registros de quejas vertidas a través de SR NYC 311, comprenden el periodo 2010 a la fecha. Confiando en la legitimidad de la API, suponemos que los valores de la fecha de creación y cierre de los SR están entre 2010 y la fecha actual.
Supuestos de las transformaciones durante el feature engineering.
Supuesto 3: Suponemos que las transformaciones que realizamos durante el feature engineering, especificamente durante la transformación de variable correspondiente al año de creación de SR a formato one hot encoding, fue correctas.
Supuesto 4: Suponemos que las transformaciones que realizamos durante el feature engineering, específicamente durante la transformación de variable correspondiente al mes de creación de SR a formato one hot encoding, fueron correctas.
Supuesto de las transformaciones durante el machine learning preprocessing.
- Supuesto 5: Suponemos que la función creada para generar ‘casos por días’ está funcionando adecuadamente.
Supuestos de las predicciones generadas
Supuesto 6: Suponemos que las predicciones pueden ser uno de dos tipos: o cero o uno.
Supuesto 7: Suponemos que con cada consulta, se sacan seis predicciones: una por distrito.
8.2 Pruebas unitarias
Para probar nuestras suposiciones iniciales, empleamos las librería marbles
y pandas
. En particular, la librería marbles nos facilitó la visualización y explicitación de errores en los datos extraidos de la API.
test_for_closed_date_greater_than_created_date
: implementada en marbles.test_for_years_out_of_range
: implementada en marbles.test_created_date_year_vs_onehot
: implementada en marbles.test_created_date_month_vs_onehot
: implementada en marbles.prueba_casos_dia
: implementada en pandas.test_binary_predictions
: función para evaluar si las predicciones arrojadas son o cero o uno.test_unique_values_borough
: función para evaluar que sólo hay cinco valores únicos o menos en la columna de borough, de las predicciones.
Todos los scripts de los test se encuentran disponibles en las carpetas tests.