Ingeniería de software para científicos de datos en Python
La <p>Ciencia de datos integra matemáticas y estadística, programación especializada, análisis avanzado, aprendizaje automático e inteligencia artificial (IA) con experiencia en temas específicos para revelar conocimientos prácticos ocultos en los datos de una organización.
La ciencia de datos es uno de los campos que ha mostrado las tasas de crecimiento más rápidas en todas las industrias. Esto es el resultado del creciente volumen de fuentes de datos y de datos que resultan de ellas.
La ciencia de datos ha generado controversia entre otras disciplinas como campo desde que comenzó a ganar reconocimiento.
En este artículo aprenderemos sobre los fundamentos de la ingeniería de software, por qué es importante para los científicos de datos y varios principios. Además, echaremos un vistazo a la refactorización, el código limpio y modular (aquí nos ocupamos principalmente de Python), las pruebas y las revisiones.
¿Por qué es importante la ingeniería de software para los científicos de datos?
Los matemáticos se oponen al uso de herramientas sin una comprensión profunda de los principios subyacentes, los ingenieros de software critican la ignorancia de los científicos de datos sobre los conceptos fundamentales de programación y los estadísticos lamentan la falta de conocimientos estadísticos fundamentales que se observa con frecuencia entre los profesionales.
Y, para ser honesto, todos son válidos.
De hecho, es necesario tener un conocimiento firme de ideas como probabilidad, álgebra y cálculo cuando se trata de estadística y aritmética.
¿Qué tan extenso debe ser ese conocimiento?
Los conceptos básicos no son negociables, aunque mucho depende de tu función.
Se aplican circunstancias similares cuando se trata de programación; Si su trabajo requiere que escriba código de producción, al menos debe estar familiarizado con los conceptos básicos de la ingeniería de software.
¿Por qué?
Hay varias causas, pero en mi opinión, se pueden resumir en los siguientes principios:
Integridad: la integridad del código se refiere a la eficacia con la que está escrito, la resistencia a los errores, la detección de excepciones, la prueba y la sujeción al escrutinio externo.
Explicabilidad : la capacidad del código para ser comprendido y su documentación adecuada.
Velocidad: la velocidad del código a la que se puede ejecutar en entornos del mundo real.
-
Modularidad: los scripts y los objetos deben ser modulares para permitir la reutilización, reducir la repetición y mejorar la eficiencia del código en todas las clases.
La importancia de la refactorización
Una vez que hacemos que nuestro código funcione, la refactorización nos ofrece la posibilidad de ordenarlo y modularizarlo. También tenemos la oportunidad de aumentar la efectividad de nuestro código. Un ingeniero de software suele utilizar uno de estos términos cuando habla de código eficaz:
Menos tiempo de ejecución
Menos espacio de memoria
Podemos trabajar en estos dos puntos de las siguientes maneras:
La Paralelización es una excelente manera de reducir nuestro tiempo de ejecución. Escribir un script para procesar datos en paralelo mientras se utilizan algunos o todos los procesadores de la máquina se conoce como paralelización.
Nuestros scripts normalmente calculan datos en serie, resolviendo un problema antes de pasar al siguiente y así sucesivamente. Esto suele ocurrir cuando desarrollamos código Python y, si queremos beneficiarnos de la paralelización, debemos ser específicos al respecto.
Dado que Python realmente no libera memoria al sistema operativo, es un desafío disminuir el uso de memoria en este lenguaje. Cuando se eliminan objetos, su memoria queda disponible para nuevos objetos Python, pero no se devuelve al sistema de forma gratuita().
La importancia de escribir código limpio
La mayoría de los temas que discutiremos en este artículo pueden, en teoría, clasificarse como herramientas o consejos para crear un código más limpio. Sin embargo, nos concentraremos en la definición precisa de la palabra "limpio" en esta sección en particular. Incluso se puede ejecutar código defectuoso, como señala Robert Martin en su libro Clean Code, pero el código sucio puede poner de rodillas a un equipo de desarrollo.
¿Cómo?
Para ser honesto, hay muchas opciones, pero considere el tiempo perdido al revisar código que estaba mal escrito o al comenzar un nuevo trabajo solo para descubrir que estaría trabajando con código antiguo e ilegible.
La importancia de escribir código modular
Aunque Python es inherentemente un lenguaje de programación orientado a objetos, una explicación detallada de lo que eso implica está fuera del alcance de este artículo.
Pero, en resumen, la programación orientada a objetos consiste en crear módulos con sus propiedades y comportamientos, a diferencia de la programación procedimental, en la que se codifica una lista de instrucciones que debe seguir un script.
En la vida real, estos rasgos se denominan cualidades y los hechos, técnicas.
Los objetos Computadora e Impresora en el escenario mencionado anteriormente serían clases independientes.
Una clase es un modelo que incluye las propiedades y métodos para cada objeto de ese tipo.
En otras palabras, todas las computadoras e impresoras que diseñamos tendrían características y funcionamiento similares.
La encapsulación es la teoría que subyace a esta propuesta. La encapsulación se refiere a la capacidad de integrar datos y funciones en un solo objeto o módulo.
Además, cuando un programa se divide en módulos, varios módulos no necesitan ser conscientes de cómo se hace algo si no son los encargados de llevarlo a cabo.
¿Y cómo ayuda esto?
Además de hacer que su código sea más eficiente en todas las clases y reutilizable, como se dijo anteriormente, también simplifica la depuración si es necesario.
Es más sencillo reutilizar módulos separados en otros programas cuando cada parte del programa se perfecciona antes de armar el programa completo. También podrá solucionar los problemas más fácilmente si puede identificar la causa raíz del error.
Importancia de las pruebas
Se requieren pruebas de ciencia de datos. La ausencia de pruebas en el código de los científicos de datos es con frecuencia una fuente de quejas de otros campos relacionados con el software. Mientras que en otros algoritmos o scripts, un error podría simplemente hacer que el programa dejara de funcionar, en la ciencia de datos, esto es aún más peligroso porque el programa podría ejecutarse pero producir información y recomendaciones incorrectas debido a valores codificados incorrectamente, funciones o datos utilizados de manera inapropiada. que contradice los supuestos en los que se basan los modelos.
Cuando hablamos de pruebas, dos ideas clave merecen discusión:
Una prueba unitaria
desarrollo basado en pruebas
Importancia de las revisiones de código
Todos los miembros de un equipo se benefician de las revisiones de código, que fomentan excelentes prácticas de programación y preparan el código para la producción. El objetivo principal de las revisiones de código es encontrar errores. Sin embargo, también son útiles para mejorar la legibilidad y garantizar que se cumplan los estándares del equipo, evitando la introducción de código lento o sucio en producción.
Las revisiones de código son beneficiosas para compartir conocimientos, además de estos beneficios, ya que los miembros del equipo pueden leer ejemplos de diferentes enfoques y antecedentes de codificación.
Conclusión
En esta historia, vimos algunos de los fundamentos que son útiles incluso para personas que, a pesar de no ser programadores por naturaleza, intentan ingresar al campo desde una formación completamente diferente. Estos ayudan a escribir un mejor código de producción, ahorrar tiempo y facilitar la vida de los programadores al implementar scripts.