En esta página:
En algunas ocasiones los Científicos de Datos (Data Scientist) olvidan por que se les pagan, principalmente son Desarrolladores, luego investigadores y quizás matemáticos, tiene la responsabilidad de crear soluciones de inmediato, que estén libres de errores, en este Post te compartiré algunas buenas prácticas para especialistas en Machine Learning, que usan el Lenguaje de Programación Python.
Antes de continuar te invito a leer el articulo: Que es Machine Learning, Historia y otros detalles, para que estés familiarizado con este Post, si ya conoces sobre Machine Learning, puedes continuar, no hay problema.
Como todos desde el inicio de nuestro aprendizaje, cometemos errores y quiero compartir algunas habilidades más comunes para llevar acabo una buena ingeniería de Machine Learning, empecemos.
No tires dinero de tu Servidor
A veces llevamos acabo experimentos en nuestros servidores en la Nube, estos experimentos pueden durar horas y al finalizarlo es sencillo cerrar la instancia que se ha creado en el servidor, pero a veces cometemos el error (yo me incluyo) de olvidar cerrar la instancia de nuestro servidor y dejarla encendida por varios dias, puedes llamar la siguiente función al final de tu código.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import os def run_command(cmd): return os.system(cmd) def shutdown(seconds=0, os='linux'): """Apague el sistema después de unos segundos. Útil para cerrar Amazon EC2 y ahorrar costos.""" if os == 'linux': run_command('sudo shutdown -h -t sec %s' % seconds) elif os == 'windows': run_command('shutdown -s -t %s' % seconds) |
Lo que hago con el código anterior, es si es que ocurre un error, el servidor no quedará ejecutándose, si es Linux o Windows, en ambos casos el servidor se apagará al detectar un error.
Mantén control de los datos NA
Siempre debes verificar si hay valores NA en los datos, porque estos valores te pueden causar problemas más adelante. Incluso verifica tus datos actuales y no creas que no sucederá algún error, para verificar los datos puedes ejecutar los siguientes comandos:
1 2 3 4 5 6 |
print(len(df)) df.isna().sum() df.dropna() print(len(df)) |
Un profesional precavido vale por mil, cuando tengas muchos datos puede ser más complicado resolver los problemas de datos NA o vacíos, así que adopta esta práctica desde el principio.
Trabaja con algunas filas
Si los datos son muy grandes y estas realizando limpieza de los datos o realizando modelado de los datos, puedes usar nrows para evitar cargar datos enormes, por ejemplo:
1 2 3 |
df_postres = pd.read_csv('postres.csv', nrows=900) |
Con esto solo trabajaremos con cierta cantidad de filas que especifiquemos, yo especifiqué 900 filas y no hago uso de todos los datos, con esto evitamos saturar los recursos de una PC, sobre todo si una PC cuenta con pocos recursos.
Acelera tu Pandas
Si has usado Pandas, te debes haber dado cuenta que algunas veces puede ir lento, sobre todo cuando trabajas con mucho código y bastantes datos, para evitar esto puedes usar e instalar la librería modin y luego la importas en tu proyecto:
1 2 3 4 |
# import pandas as pd import modin.pandas as pd |
Modin acelera el flujo de trabajo en Pandas, en su página (repositorio GitHub) puedes encontrar documentación sobre instalación, configuración, uso, etc.
Registra el tiempo de las funciones
A veces si todo el código funciona bien, esto no significa que el código que has escrito sea excelente. Algunos errores en el código, pueden hacer que el código vaya más lento de lo normal, es necesario encontrar esos errores, puedes hacerlo usando el siguiente decorador para registrar el tiempo de las funciones:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import time def timing(f): """Decorador para funciones de temporización Usage: @timing def function(a): pass """ @wraps(f) def wrapper(*args, **kwargs): iniciar = time.time() resultado = f(*args, **kwargs) fin = time.time() print('function:%r took: %2.2f sec' % (f.__name__, fin - iniciar)) return resultado return wrapper |
Conclusión
Espero que te hay servido de mucho estos consejos, si los pones en práctica constantemente, lograrás hacerlos parte de tu trabajo y tendrás mejores resultados en los proyectos que lleves a cabo.
Nota(s)
- Algunos métodos, funciones, etc. mencionados en este Post, pueden ser modificados, ser eliminados o continuar, esto no depende de mi, si no de los desarrolladores que dan soporte a Pandas y Python.
- No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo.
Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.