Puede haber una brecha de conocimiento al pasar de proyectos exploratorios de aprendizaje automático, típicos de la investigación y el estudio, a proyectos a nivel industrial. Esto se debe al hecho de que los proyectos industriales generalmente tienen tres objetivos adicionales: colaborativo, reproducible y reutilizable, que sirven para mejorar la continuidad del negocio, aumentar la eficiencia y reducir los costos. Aunque no estoy cerca de encontrar una solución perfecta, me gustaría documentar algunos consejos para transformar un código de aprendizaje automático exploratorio basado en un cuaderno en un proyecto listo para la industria y diseñado con más escalabilidad y sostenibilidad.
He clasificado estos consejos en tres estrategias clave:
- Mejora 1: Modularización: dividir el código en partes más pequeñas
- Mejora 2: Control de versiones: Control de versiones de datos, código y modelo
- Mejora 3: Coherencia: estructura coherente y convención de nomenclatura
Planteamiento del problema
Una dificultad que he enfrentado es tener un solo cuaderno para todo el proyecto de ciencia de datos, lo cual es común al aprender ciencia de datos. Como puede experimentar, existen componentes de código repetibles en el ciclo de vida de la ciencia de datos; por ejemplo, se aplican los mismos pasos de preprocesamiento de datos para transformar tanto los datos del tren como los datos de inferencia. Si no se maneja adecuadamente, se copian y reutilizan diferentes versiones de la misma función en múltiples ubicaciones. No sólo disminuye la coherencia del código, sino que también dificulta la resolución de problemas de todo el portátil.
Mal ejemplo
train_data = train_data.drop(['Evaporation', 'Sunshine', 'Cloud3pm', 'Cloud9am'], axis=1)
numeric_cols = ['MinTemp', 'MaxTemp', 'Rainfall', 'WindGustSpeed', 'WindSpeed9am']
train_data[numeric_cols] = train_data[numeric_cols].fillna(train_data[numeric_cols].mean())
train_data['Month'] = pd.to_datetime(train_data['Date']).dt.month.apply(str)inference_data = inference_data.drop(['Evaporation', 'Sunshine'…