Ciencia de datos ágil - Guía rápida

La ciencia de datos ágil es un enfoque que utiliza la ciencia de datos con una metodología ágil para el desarrollo de aplicaciones web. Se centra en el resultado del proceso de ciencia de datos adecuado para realizar cambios en una organización. La ciencia de datos incluye la creación de aplicaciones que describen el proceso de investigación con análisis, visualización interactiva y ahora también aprendizaje automático aplicado.

El principal objetivo de la ciencia de datos ágil es:

Documentar y orientar el análisis de datos explicativos para descubrir y seguir el camino crítico hacia un producto atractivo.

La ciencia de datos ágil está organizada con el siguiente conjunto de principios:

Iteración continua

Este proceso implica una iteración continua con la creación de tablas, gráficos, informes y predicciones. La construcción de modelos predictivos requerirá muchas iteraciones de ingeniería de características con extracción y producción de información.

Salida intermedia

Esta es la lista de pistas de salidas generadas. Incluso se dice que los experimentos fallidos también tienen resultados. El seguimiento de la salida de cada iteración ayudará a crear una mejor salida en la próxima iteración.

Experimentos de prototipos

Los experimentos de prototipos implican la asignación de tareas y la generación de resultados según los experimentos. En una tarea determinada, debemos iterar para obtener información y estas iteraciones se pueden explicar mejor como experimentos.

Integracion de datos

El ciclo de vida del desarrollo de software incluye diferentes fases con datos esenciales para:

  • customers

  • desarrolladores y

  • el negocio

La integración de datos allana el camino para mejores perspectivas y resultados.

Valor de datos piramidales

El valor de la pirámide anterior describía las capas necesarias para el desarrollo de la “ciencia de datos ágil”. Comienza con una colección de registros basada en los requisitos y registros individuales de plomería. Los gráficos se crean después de la limpieza y agregación de datos. Los datos agregados se pueden utilizar para la visualización de datos. Los informes se generan con la estructura, los metadatos y las etiquetas de datos adecuados. La segunda capa de pirámide desde la parte superior incluye análisis de predicción. La capa de predicción es donde se crea más valor, pero ayuda a crear buenas predicciones que se centran en la ingeniería de características.

La capa superior involucra acciones en las que el valor de los datos se impulsa de manera efectiva. La mejor ilustración de esta implementación es la "Inteligencia Artificial".

En este capítulo, nos centraremos en los conceptos del ciclo de vida del desarrollo de software denominados “ágiles”. La metodología de desarrollo de software ágil ayuda a construir un software a través de sesiones de incremento en iteraciones cortas de 1 a 4 semanas para que el desarrollo esté alineado con los requisitos comerciales cambiantes.

Hay 12 principios que describen la metodología Agile en detalle:

Satisfacción de clientes

Se da la máxima prioridad a los clientes que se centran en los requisitos mediante la entrega temprana y continua de software valioso.

Acogiendo con satisfacción nuevos cambios

Los cambios son aceptables durante el desarrollo del software. Los procesos ágiles están diseñados para funcionar a fin de igualar la ventaja competitiva del cliente.

Entrega

La entrega de un software funcional se da a los clientes en un lapso de una a cuatro semanas.

Colaboración

Los analistas de negocios, los analistas de calidad y los desarrolladores deben trabajar juntos durante todo el ciclo de vida del proyecto.

Motivación

Los proyectos deben diseñarse con un clan de personas motivadas. Proporciona un entorno para apoyar a los miembros individuales del equipo.

Conversación personal

La conversación cara a cara es el método más eficiente y eficaz de enviar información hacia y dentro de un equipo de desarrollo.

Medir el progreso

Medir el progreso es la clave que ayuda a definir el progreso del desarrollo de proyectos y software.

Manteniendo un ritmo constante

El proceso ágil se centra en el desarrollo sostenible. La empresa, los desarrolladores y los usuarios deben poder mantener un ritmo constante con el proyecto.

Supervisión

Es obligatorio mantener una atención regular a la excelencia técnica y al buen diseño para mejorar la funcionalidad ágil.

Sencillez

El proceso ágil mantiene todo simple y usa términos simples para medir el trabajo que no se completa.

Términos autoorganizados

Un equipo ágil debe autoorganizarse y debe ser independiente con la mejor arquitectura; los requisitos y diseños surgen de equipos autoorganizados.

Revisa el trabajo

Es importante revisar el trabajo a intervalos regulares para que el equipo pueda reflexionar sobre cómo avanza el trabajo. La revisión del módulo de manera oportuna mejorará el desempeño.

Stand-up diario

El stand-up diario se refiere a la reunión diaria de estado entre los miembros del equipo. Proporciona actualizaciones relacionadas con el desarrollo de software. También se refiere a abordar los obstáculos del desarrollo de proyectos.

El stand up diario es una práctica obligatoria, sin importar cómo se establezca un equipo ágil, independientemente de la ubicación de su oficina.

La lista de características de un stand-up diario es la siguiente:

  • La duración de la reunión diaria de pie debe ser de aproximadamente 15 minutos. No debe extenderse por más tiempo.

  • Stand-up debe incluir discusiones sobre la actualización del estado.

  • Los participantes de esta reunión generalmente se ponen de pie con la intención de terminar reuniéndose rápidamente.

Historia del usuario

Una historia suele ser un requisito, que se formula en pocas oraciones en un lenguaje sencillo y debe completarse en una iteración. Una historia de usuario debe incluir las siguientes características:

  • Todo el código relacionado debe tener registros relacionados.

  • Los casos de prueba unitaria para la iteración especificada.

  • Deben definirse todos los casos de prueba de aceptación.

  • Aceptación del propietario del producto al definir la historia.

¿Qué es Scrum?

Scrum puede considerarse como un subconjunto de metodología ágil. Es un proceso ligero e incluye las siguientes características:

  • Es un marco de proceso, que incluye un conjunto de prácticas que deben seguirse en un orden coherente. La mejor ilustración de Scrum es seguir iteraciones o sprints.

  • Es un proceso "ligero", lo que significa que el proceso se mantiene lo más pequeño posible, para maximizar el rendimiento productivo en la duración especificada.

El proceso Scrum es conocido por su proceso diferenciador en comparación con otras metodologías de enfoque ágil tradicional. Se divide en las siguientes tres categorías:

  • Roles

  • Artifacts

  • Cajas de tiempo

Los roles definen a los miembros del equipo y sus roles incluidos a lo largo del proceso. El equipo Scrum consta de los siguientes tres roles:

  • Scrum Master

  • Dueño del producto

  • Team

Los artefactos Scrum proporcionan información clave que cada miembro debe conocer. La información incluye detalles del producto, actividades planificadas y actividades completadas. Los artefactos definidos en el marco de Scrum son los siguientes:

  • Pila de Producto

  • Cartera de Sprint

  • Cuadro de incendio

  • Increment

Los cuadros de tiempo son las historias de usuario que se planifican para cada iteración. Estas historias de usuario ayudan a describir las características del producto que forman parte de los artefactos de Scrum. La acumulación de productos es una lista de historias de usuarios. Estas historias de usuarios se priorizan y se envían a las reuniones de usuarios para decidir cuál debe abordarse.

¿Por qué Scrum Master?

Scrum Master interactúa con todos los miembros del equipo. Veamos ahora la interacción del Scrum Master con otros equipos y recursos.

Dueño del producto

El Scrum Master interactúa con el propietario del producto de las siguientes maneras:

  • Encontrar técnicas para lograr una cartera de productos efectiva de historias de usuarios y administrarlas.

  • Ayudar al equipo a comprender las necesidades de elementos de la cartera de productos de productos claros y concisos.

  • Planificación de producto con entorno específico.

  • Asegurarse de que el propietario del producto sepa cómo aumentar el valor del producto.

  • Facilitar eventos de Scrum cuando sea necesario.

Equipo Scrum

El Scrum Master interactúa con el equipo de varias formas:

  • Coaching a la organización en su adopción de Scrum.

  • Planificación de implementaciones de Scrum para la organización específica.

  • Ayudar a los empleados y las partes interesadas a comprender los requisitos y las fases del desarrollo del producto.

  • Trabajar con Scrum Masters de otros equipos para aumentar la efectividad de la aplicación de Scrum del equipo especificado.

Organización

El Scrum Master interactúa con la organización de varias formas. Algunos se mencionan a continuación:

  • El equipo de coaching y scrum interactúa con la autoorganización e incluye una característica de funcionalidad cruzada.

  • Coaching de la organización y los equipos en áreas donde Scrum aún no se ha adoptado por completo o no se ha aceptado.

Beneficios de Scrum

Scrum ayuda a los clientes, miembros del equipo y partes interesadas a colaborar. Incluye un enfoque temporal y comentarios continuos del propietario del producto, lo que garantiza que el producto esté en condiciones de funcionamiento. Scrum proporciona beneficios a diferentes roles del proyecto.

Cliente

Los sprints o iteraciones se consideran para una duración más corta y las historias de usuario se diseñan según la prioridad y se toman en la planificación del sprint. Garantiza que se cumplan los requisitos del cliente en cada entrega de sprint. De lo contrario, se anotan los requisitos y se planifican y se toman para el sprint.

Organización

La organización con la ayuda de Scrum y Scrum masters puede centrarse en los esfuerzos necesarios para el desarrollo de historias de usuario, reduciendo así la sobrecarga de trabajo y evitando reelaboraciones, si las hubiera. Esto también ayuda a mantener una mayor eficiencia del equipo de desarrollo y la satisfacción del cliente. Este enfoque también ayuda a aumentar el potencial del mercado.

Gerentes de producto

La principal responsabilidad de los gerentes de producto es garantizar que se mantenga la calidad del producto. Con la ayuda de Scrum Masters, es fácil facilitar el trabajo, recopilar respuestas rápidas y absorber los cambios, si los hubiera. Los gerentes de producto también verifican que el producto diseñado esté alineado con los requisitos del cliente en cada sprint.

Equipo de desarrollo

Con la naturaleza encuadrada en el tiempo y manteniendo los sprints durante un período de tiempo menor, el equipo de desarrollo se entusiasma al ver que el trabajo se refleja y se entrega correctamente. El producto de trabajo incrementa cada nivel después de cada iteración o más bien podemos llamarlos como "sprint". Las historias de usuario que están diseñadas para cada sprint se convierten en la prioridad del cliente y agregan más valor a la iteración.

Conclusión

Scrum es un marco eficiente dentro del cual puede desarrollar software en equipo. Está completamente diseñado sobre principios ágiles. ScrumMaster está ahí para ayudar y cooperar con el equipo de Scrum en todas las formas posibles. Actúa como un entrenador personal que le ayuda a seguir con el plan diseñado y realizar todas las actividades según el plan. La autoridad de ScrumMaster nunca debe extenderse más allá del proceso. Él / ella debería ser potencialmente capaz de manejar todas las situaciones.

En este capítulo, comprenderemos el proceso de ciencia de datos y las terminologías necesarias para comprender el proceso.

“La ciencia de datos es la combinación de interfaz de datos, desarrollo de algoritmos y tecnología para resolver problemas analíticos complejos”.

La ciencia de datos es un campo interdisciplinario que abarca métodos, procesos y sistemas científicos con categorías incluidas en él como aprendizaje automático, conocimiento matemático y estadístico con investigación tradicional. También incluye una combinación de habilidades de piratería con experiencia sustancial. La ciencia de datos extrae principios de las matemáticas, la estadística, la ciencia de la información y la informática, la minería de datos y el análisis predictivo.

Los diferentes roles que forman parte del equipo de ciencia de datos se mencionan a continuación:

Clientes

Los clientes son las personas que utilizan el producto. Su interés determina el éxito del proyecto y sus comentarios son muy valiosos en la ciencia de datos.

Desarrollo de negocios

Este equipo de ciencia de datos registra a los primeros clientes, ya sea de primera mano o mediante la creación de páginas de destino y promociones. El equipo de desarrollo empresarial ofrece el valor del producto.

Gerentes de producto

Los gerentes de producto asumen la importancia de crear el mejor producto, que es valioso en el mercado.

Diseñadores de interacción

Se centran en las interacciones de diseño en torno a modelos de datos para que los usuarios encuentren el valor adecuado.

Científicos de datos

Los científicos de datos exploran y transforman los datos de nuevas formas para crear y publicar nuevas funciones. Estos científicos también combinan datos de diversas fuentes para crear un nuevo valor. Desempeñan un papel importante en la creación de visualizaciones con investigadores, ingenieros y desarrolladores web.

Investigadores

Como su nombre lo especifica, los investigadores están involucrados en actividades de investigación. Resuelven problemas complicados que los científicos de datos no pueden hacer. Estos problemas implican un enfoque intenso y un tiempo de aprendizaje automático y módulo de estadísticas.

Adaptarse al cambio

Todos los miembros del equipo de ciencia de datos deben adaptarse a los nuevos cambios y trabajar en función de los requisitos. Se deben realizar varios cambios para adoptar una metodología ágil con ciencia de datos, que se mencionan a continuación:

  • Elección de generalistas sobre especialistas.

  • Preferencia de equipos pequeños sobre equipos grandes.

  • Utilizando herramientas y plataformas de alto nivel.

  • Compartición continua e iterativa del trabajo intermedio.

Note

En el equipo de ciencia de datos ágiles, un pequeño equipo de generalistas utiliza herramientas de alto nivel que son escalables y refinan los datos a través de iteraciones en estados de valor cada vez más altos.

Considere los siguientes ejemplos relacionados con el trabajo de los miembros del equipo de ciencia de datos:

  • Los diseñadores entregan CSS.

  • Los desarrolladores web crean aplicaciones completas, comprenden la experiencia del usuario y el diseño de la interfaz.

  • Los científicos de datos deben trabajar tanto en la investigación como en la construcción de servicios web, incluidas las aplicaciones web.

  • Los investigadores trabajan en código base, que muestra resultados que explican los resultados intermedios.

  • Los gerentes de producto intentan identificar y comprender las fallas en todas las áreas relacionadas.

En este capítulo, aprenderemos sobre las diferentes herramientas Agile y su instalación. La pila de desarrollo de la metodología ágil incluye el siguiente conjunto de componentes:

Eventos

Un evento es una ocurrencia que ocurre o se registra junto con sus características y marcas de tiempo.

Un evento puede presentarse en muchas formas, como servidores, sensores, transacciones financieras o acciones, que nuestros usuarios realizan en nuestra aplicación. En este completo tutorial, utilizaremos archivos JSON que facilitarán el intercambio de datos entre diferentes herramientas e idiomas.

Coleccionistas

Los coleccionistas son agregadores de eventos. Recopilan eventos de manera sistemática para almacenar y agregar datos voluminosos poniéndolos en cola para que los trabajadores en tiempo real tomen medidas.

Documento distribuido

Estos documentos incluyen multinodo (múltiples nodos) que almacena el documento en un formato específico. Nos centraremos en MongoDB en este tutorial.

Servidor de aplicaciones web

El servidor de aplicaciones web habilita datos como JSON a través del cliente a través de la visualización, con una sobrecarga mínima. Significa que el servidor de aplicaciones web ayuda a probar e implementar los proyectos creados con una metodología ágil.

Navegador moderno

Permite que el navegador o la aplicación modernos presenten datos como una herramienta interactiva para nuestros usuarios.

Configuración ambiental local

Para administrar conjuntos de datos, nos centraremos en el marco Anaconda de Python que incluye herramientas para administrar Excel, CSV y muchos más archivos. El tablero del marco de Anaconda una vez instalado es como se muestra a continuación. También se le llama el "Navegador Anaconda" -

El navegador incluye el "marco Jupyter", que es un sistema portátil que ayuda a administrar conjuntos de datos. Una vez que inicie el marco, se alojará en el navegador como se menciona a continuación:

En este capítulo, nos centraremos en la diferencia entre datos estructurados, semiestructurados y no estructurados.

Datos estructurados

Los datos estructurados se refieren a los datos almacenados en formato SQL en una tabla con filas y columnas. Incluye una clave relacional, que se asigna a campos prediseñados. Los datos estructurados se utilizan a mayor escala.

Los datos estructurados representan solo del 5 al 10 por ciento de todos los datos informáticos.

Datos semiestructurados

Los datos semiestructurados incluyen datos que no residen en una base de datos relacional. Incluyen algunas de las propiedades organizativas que facilitan su análisis. Incluye el mismo proceso para almacenarlos en base de datos relacional. Los ejemplos de base de datos semiestructurada son archivos CSV, documentos XML y JSON. Las bases de datos NoSQL se consideran semiestructuradas.

Datos no estructurados

Los datos no estructurados representan el 80 por ciento de los datos. A menudo incluye texto y contenido multimedia. Los mejores ejemplos de datos no estructurados incluyen archivos de audio, presentaciones y páginas web. Los ejemplos de datos no estructurados generados por máquinas son imágenes de satélite, datos científicos, fotografías y video, datos de radar y sonar.

La estructura piramidal anterior se centra específicamente en la cantidad de datos y la proporción en la que se encuentran dispersos.

Los datos cuasi estructurados aparecen como tipos entre datos no estructurados y semiestructurados. En este tutorial, nos centraremos en datos semiestructurados, que son beneficiosos para la investigación en ciencia de datos y metodología ágil.

Los datos semiestructurados no tienen un modelo de datos formal, pero tienen un patrón y una estructura aparentes y autodescriptivos que se desarrollan mediante su análisis.

El enfoque completo de este tutorial es seguir una metodología ágil con menos pasos y con la implementación de herramientas más útiles. Para comprender esto, es importante conocer la diferencia entre las bases de datos SQL y NoSQL.

La mayoría de los usuarios conocen la base de datos SQL y tienen un buen conocimiento de MySQL, Oracle u otras bases de datos SQL. En los últimos años, la base de datos NoSQL se está adoptando ampliamente para resolver varios problemas comerciales y requisitos del proyecto.

La siguiente tabla muestra la diferencia entre las bases de datos SQL y NoSQL:

SQL NoSQL
Las bases de datos SQL se denominan principalmente sistema de gestión de bases de datos relacionales (RDBMS). La base de datos NoSQL también se denomina base de datos orientada a documentos. No es relacional y está distribuido.
Las bases de datos basadas en SQL incluyen la estructura de la tabla con filas y columnas. Colección de tablas y otras estructuras de esquema llamadas base de datos. La base de datos NoSQL incluye documentos como estructura principal y la inclusión de documentos se denomina colección.
Las bases de datos SQL incluyen un esquema predefinido. Las bases de datos NoSQL tienen datos dinámicos e incluyen datos no estructurados.
Las bases de datos SQL son escalables verticalmente. Las bases de datos NoSQL son escalables horizontalmente.
Las bases de datos SQL son adecuadas para entornos de consultas complejos. NoSQL no tiene interfaces estándar para el desarrollo de consultas complejas.
Las bases de datos SQL no son factibles para el almacenamiento jerárquico de datos. Las bases de datos NoSQL se adaptan mejor al almacenamiento jerárquico de datos.
Las bases de datos SQL son las más adecuadas para transacciones pesadas en las aplicaciones especificadas. Las bases de datos NoSQL todavía no se consideran comparables en alta carga para aplicaciones transaccionales complejas.
Las bases de datos SQL brindan un excelente soporte para sus proveedores. La base de datos NoSQL todavía depende del soporte de la comunidad. Solo unos pocos expertos están disponibles para configurar e implementar para implementaciones NoSQL a gran escala.
Las bases de datos SQL se centran en las propiedades ACID: atómicas, coherencia, aislamiento y durabilidad. La base de datos NoSQL se centra en las propiedades de CAP: coherencia, disponibilidad y tolerancia de partición.
Las bases de datos SQL pueden clasificarse como de código abierto o de código cerrado según los proveedores que las hayan optado. Las bases de datos NoSQL se clasifican según el tipo de almacenamiento. Las bases de datos NoSQL son de código abierto por defecto.

¿Por qué NoSQL para ágil?

La comparación mencionada anteriormente muestra que la base de datos de documentos NoSQL es totalmente compatible con el desarrollo ágil. No tiene esquema y no se centra completamente en el modelado de datos. En cambio, NoSQL difiere las aplicaciones y los servicios y, por lo tanto, los desarrolladores obtienen una mejor idea de cómo se pueden modelar los datos. NoSQL define el modelo de datos como el modelo de aplicación.

Instalación de MongoDB

A lo largo de este tutorial, nos centraremos más en los ejemplos de MongoDB, ya que se considera el mejor "esquema NoSQL".

Hay ocasiones en las que los datos no están disponibles en formato relacional y necesitamos mantenerlos transaccionales con la ayuda de bases de datos NoSQL.

En este capítulo, nos centraremos en el flujo de datos de NoSQL. También aprenderemos cómo es operativo con una combinación de ciencia ágil y de datos.

Una de las principales razones para utilizar NoSQL con agile es aumentar la velocidad con la competencia del mercado. Las siguientes razones muestran cómo NoSQL se adapta mejor a la metodología de software ágil:

Menos barreras

Cambiar el modelo, que actualmente está pasando por mid-stream tiene algunos costos reales incluso en caso de desarrollo ágil. Con NoSQL, los usuarios trabajan con datos agregados en lugar de perder el tiempo normalizando los datos. El punto principal es hacer algo y trabajar con el objetivo de hacer que los datos del modelo sean perfectos.

Mayor escalabilidad

Siempre que una organización crea un producto, se centra más en su escalabilidad. NoSQL siempre es conocido por su escalabilidad, pero funciona mejor cuando está diseñado con escalabilidad horizontal.

Capacidad para aprovechar los datos

NoSQL es un modelo de datos sin esquema que permite al usuario utilizar fácilmente volúmenes de datos, que incluyen varios parámetros de variabilidad y velocidad. Al considerar una opción de tecnología, siempre debe considerar la que aproveche los datos a una escala mayor.

Flujo de datos de NoSQL

Consideremos el siguiente ejemplo en el que hemos mostrado cómo un modelo de datos se centra en la creación del esquema RDBMS.

A continuación se muestran los diferentes requisitos del esquema:

  • Se debe incluir la identificación del usuario.

  • Cada usuario debe tener obligatoriamente al menos una habilidad.

  • Los detalles de la experiencia de cada usuario deben mantenerse correctamente.

La tabla de usuario está normalizada con 3 tablas separadas:

  • Users

  • Habilidades de usuario

  • Experiencia de usuario

La complejidad aumenta al consultar la base de datos y el consumo de tiempo se observa con una mayor normalización, lo que no es bueno para la metodología Agile. El mismo esquema se puede diseñar con la base de datos NoSQL como se menciona a continuación:

NoSQL mantiene la estructura en formato JSON, que es de estructura ligera. Con JSON, las aplicaciones pueden almacenar objetos con datos anidados como documentos individuales.

En este capítulo nos centraremos en la estructura JSON, que forma parte de la “Metodología ágil”. MongoDB es una estructura de datos NoSQL ampliamente utilizada y funciona fácilmente para recopilar y mostrar registros.

Paso 1

Este paso implica establecer una conexión con MongoDB para crear una colección y un modelo de datos especificado. Todo lo que necesita ejecutar es el comando "mongod" para iniciar la conexión y el comando mongo para conectarse al terminal especificado.

Paso 2

Cree una nueva base de datos para crear registros en formato JSON. Por ahora, estamos creando una base de datos ficticia llamada "mydb".

>use mydb
switched to db mydb
>db
mydb
>show dbs
local 0.78125GB
test 0.23012GB
>db.user.insert({"name":"Agile Data Science"})
>show dbs
local 0.78125GB
mydb 0.23012GB
test 0.23012GB

Paso 3

La creación de una colección es obligatoria para obtener la lista de registros. Esta función es beneficiosa para la investigación y los resultados de la ciencia de datos.

>use test
switched to db test
>db.createCollection("mycollection")
{ "ok" : 1 }
>show collections
mycollection
system.indexes
>db.createCollection("mycol", { capped : true, autoIndexId : true, size :
 6142800, max : 10000 } )
{ "ok" : 1 }
>db.agiledatascience.insert({"name" : "demoname"})
>show collections
mycol
mycollection
system.indexes
demoname

La visualización de datos juega un papel muy importante en la ciencia de datos. Podemos considerar la visualización de datos como un módulo de ciencia de datos. La ciencia de datos incluye más que la creación de modelos predictivos. Incluye explicación de modelos y su uso para comprender datos y tomar decisiones. La visualización de datos es una parte integral de la presentación de datos de la manera más convincente.

Desde el punto de vista de la ciencia de datos, la visualización de datos es una característica destacada que muestra los cambios y tendencias.

Considere las siguientes pautas para una visualización de datos efectiva:

  • Coloque los datos a lo largo de una escala común.

  • El uso de barras es más efectivo en comparación con círculos y cuadrados.

  • Se debe utilizar el color adecuado para los diagramas de dispersión.

  • Utilice un gráfico circular para mostrar proporciones.

  • La visualización de rayos solares es más eficaz para gráficos jerárquicos.

Agile necesita un lenguaje de secuencias de comandos simple para la visualización de datos y con la ciencia de datos en colaboración "Python" es el lenguaje sugerido para la visualización de datos.

Ejemplo 1

El siguiente ejemplo demuestra la visualización de datos del PIB calculado en años específicos. “Matplotlib” es la mejor biblioteca para visualización de datos en Python. La instalación de esta biblioteca se muestra a continuación:

Considere el siguiente código para comprender esto:

import matplotlib.pyplot as plt
years = [1950, 1960, 1970, 1980, 1990, 2000, 2010]
gdp = [300.2, 543.3, 1075.9, 2862.5, 5979.6, 10289.7, 14958.3]

# create a line chart, years on x-axis, gdp on y-axis
plt.plot(years, gdp, color='green', marker='o', linestyle='solid')

# add a title plt.title("Nominal GDP")
# add a label to the y-axis
plt.ylabel("Billions of $")
plt.show()

Salida

El código anterior genera la siguiente salida:

Hay muchas formas de personalizar los gráficos con etiquetas de eje, estilos de línea y marcadores de puntos. Centrémonos en el siguiente ejemplo que demuestra la mejor visualización de datos. Estos resultados se pueden utilizar para obtener mejores resultados.

Ejemplo 2

import datetime
import random
import matplotlib.pyplot as plt

# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]

# plot
plt.plot(x,y)

# beautify the x-labels
plt.gcf().autofmt_xdate()
plt.show()

Salida

El código anterior genera la siguiente salida:

El enriquecimiento de datos se refiere a una variedad de procesos utilizados para mejorar, refinar y mejorar los datos sin procesar. Se refiere a la transformación de datos útiles (datos sin procesar en información útil). El proceso de enriquecimiento de datos se centra en hacer de los datos un activo de datos valioso para las empresas modernas.

El proceso de enriquecimiento de datos más común incluye la corrección de errores ortográficos o tipográficos en la base de datos mediante el uso de algoritmos de decisión específicos. Las herramientas de enriquecimiento de datos agregan información útil a tablas de datos simples.

Considere el siguiente código para la corrección ortográfica de palabras:

import re
from collections import Counter
def words(text): return re.findall(r'\w+', text.lower())
WORDS = Counter(words(open('big.txt').read()))

def P(word, N=sum(WORDS.values())):
   "Probabilities of words"
   return WORDS[word] / N
	
def correction(word):
   "Spelling correction of word"
   return max(candidates(word), key=P)
	
def candidates(word):
   "Generate possible spelling corrections for word."
   return (known([word]) or known(edits1(word)) or known(edits2(word)) or [word])
	
def known(words):
   "The subset of `words` that appear in the dictionary of WORDS."
   return set(w for w in words if w in WORDS)
	
def edits1(word):
   "All edits that are one edit away from `word`."
   letters = 'abcdefghijklmnopqrstuvwxyz'
   splits = [(word[:i], word[i:]) for i in range(len(word) + 1)]
   deletes = [L + R[1:] for L, R in splits if R]
   transposes = [L + R[1] + R[0] + R[2:] for L, R in splits if len(R)>1]
   replaces = [L + c + R[1:] for L, R in splits if R for c in letters]
   inserts = [L + c + R for L, R in splits for c in letters]
   return set(deletes + transposes + replaces + inserts)
	
def edits2(word):
   "All edits that are two edits away from `word`."
   return (e2 for e1 in edits1(word) for e2 in edits1(e1))
   print(correction('speling'))
   print(correction('korrectud'))

En este programa, coincidiremos con "big.txt" que incluye palabras corregidas. Las palabras coinciden con las palabras incluidas en el archivo de texto e imprimen los resultados correspondientes en consecuencia.

Salida

El código anterior generará la siguiente salida:

En este capítulo, aprenderemos sobre la creación de informes, que es un módulo importante de metodología ágil. Páginas de gráficos de sprints ágiles creadas mediante visualización en informes completos. Con los informes, los gráficos se vuelven interactivos, las páginas estáticas se vuelven dinámicas y los datos relacionados con la red. Las características de la etapa de informes de la pirámide de valor de datos se muestran a continuación:

Pondremos más énfasis en la creación de un archivo csv, que se puede utilizar como informe para el análisis de la ciencia de datos y sacar conclusiones. Aunque ágil se enfoca en menos documentación, siempre se considera generar informes para mencionar el progreso del desarrollo del producto.

import csv
#----------------------------------------------------------------------
def csv_writer(data, path):
   """
      Write data to a CSV file path
   """
   with open(path, "wb") as csv_file:
   writer = csv.writer(csv_file, delimiter=',')
   for line in data:
   writer.writerow(line)
#----------------------------------------------------------------------
if __name__ == "__main__":
   data = ["first_name,last_name,city".split(","),
      "Tyrese,Hirthe,Strackeport".split(","),
      "Jules,Dicki,Lake Nickolasville".split(","),
      "Dedric,Medhurst,Stiedemannberg".split(",")
   ]
	
   path = "output.csv"
   csv_writer(data, path)

El código anterior le ayudará a generar el "archivo csv" como se muestra a continuación:

Consideremos los siguientes beneficios de los informes csv (valores separados por comas):

  • Es amigable para los humanos y fácil de editar manualmente.
  • Es simple de implementar y analizar.
  • CSV se puede procesar en todas las aplicaciones.
  • Es más pequeño y más rápido de manejar.
  • CSV sigue un formato estándar.
  • Proporciona un esquema sencillo para los científicos de datos.

En este capítulo, aprenderemos sobre el papel de las predicciones en la ciencia de datos ágil. Los informes interactivos exponen diferentes aspectos de los datos. Las predicciones forman la cuarta capa del sprint ágil.

Al hacer predicciones, siempre nos referimos a los datos pasados ​​y los usamos como inferencias para iteraciones futuras. En este proceso completo, pasamos los datos del procesamiento por lotes de datos históricos a datos en tiempo real sobre el futuro.

El papel de las predicciones incluye lo siguiente:

  • Las predicciones ayudan en la previsión. Algunos pronósticos se basan en inferencias estadísticas. Algunas de las predicciones se basan en opiniones de expertos.

  • La inferencia estadística está involucrada con predicciones de todo tipo.

  • A veces, los pronósticos son precisos, mientras que a veces los pronósticos son inexactos.

Analítica predictiva

El análisis predictivo incluye una variedad de técnicas estadísticas desde el modelado predictivo, el aprendizaje automático y la minería de datos que analizan hechos actuales e históricos para hacer predicciones sobre eventos futuros y desconocidos.

El análisis predictivo requiere datos de entrenamiento. Los datos entrenados incluyen características independientes y dependientes. Las características dependientes son los valores que un usuario intenta predecir. Las características independientes son características que describen las cosas que queremos predecir en función de las características dependientes.

El estudio de características se denomina ingeniería de características; esto es crucial para hacer predicciones. La visualización de datos y el análisis de datos exploratorios son parte de la ingeniería de características; Estos forman el núcleo deAgile data science.

Haciendo predicciones

Hay dos formas de hacer predicciones en la ciencia de datos ágil:

  • Regression

  • Classification

La creación de una regresión o una clasificación depende completamente de los requisitos comerciales y su análisis. La predicción de la variable continua conduce al modelo de regresión y la predicción de las variables categóricas conduce al modelo de clasificación.

Regresión

La regresión considera ejemplos que comprenden características y, por lo tanto, produce una salida numérica.

Clasificación

La clasificación toma la entrada y produce una clasificación categórica.

Note - El conjunto de datos de ejemplo que define la entrada para la predicción estadística y que permite que la máquina aprenda se denomina "datos de entrenamiento".

En este capítulo, aprenderemos sobre la aplicación de las funciones de extracción con PySpark en Agile Data Science.

Descripción general de Spark

Apache Spark se puede definir como un marco de procesamiento rápido en tiempo real. Realiza cálculos para analizar datos en tiempo real. Apache Spark se presenta como un sistema de procesamiento de flujo en tiempo real y también puede encargarse del procesamiento por lotes. Apache Spark admite consultas interactivas y algoritmos iterativos.

Spark está escrito en "lenguaje de programación Scala".

PySpark se puede considerar como una combinación de Python con Spark. PySpark ofrece el shell PySpark, que vincula la API de Python con el núcleo de Spark e inicializa el contexto de Spark. La mayoría de los científicos de datos usan PySpark para rastrear características como se discutió en el capítulo anterior.

En este ejemplo, nos centraremos en las transformaciones para construir un conjunto de datos llamado conteos y guardarlo en un archivo en particular.

text_file = sc.textFile("hdfs://...")
counts = text_file.flatMap(lambda line: line.split(" ")) \
   .map(lambda word: (word, 1)) \
   .reduceByKey(lambda a, b: a + b)
counts.saveAsTextFile("hdfs://...")

Con PySpark, un usuario puede trabajar con RDD en lenguaje de programación Python. La biblioteca incorporada, que cubre los conceptos básicos de los documentos y componentes basados ​​en datos, ayuda en esto.

La regresión logística se refiere al algoritmo de aprendizaje automático que se utiliza para predecir la probabilidad de una variable dependiente categórica. En la regresión logística, la variable dependiente es la variable binaria, que consta de datos codificados como 1 (valores booleanos de verdadero y falso).

En este capítulo, nos centraremos en desarrollar un modelo de regresión en Python usando variable continua. El ejemplo de modelo de regresión lineal se centrará en la exploración de datos del archivo CSV.

El objetivo de la clasificación es predecir si el cliente se suscribirá (1/0) a un depósito a plazo.

import pandas as pd
import numpy as np
from sklearn import preprocessing
import matplotlib.pyplot as plt

plt.rc("font", size=14)
from sklearn.linear_model import LogisticRegression
from sklearn.cross_validation import train_test_split

import seaborn as sns
sns.set(style="white")
sns.set(style="whitegrid", color_codes=True)
data = pd.read_csv('bank.csv', header=0)
data = data.dropna()
print(data.shape)
print(list(data.columns))

Siga estos pasos para implementar el código anterior en Anaconda Navigator con "Jupyter Notebook" -

Step 1 - Inicie Jupyter Notebook con Anaconda Navigator.

Step 2 - Cargue el archivo csv para obtener la salida del modelo de regresión de manera sistemática.

Step 3 - Cree un nuevo archivo y ejecute la línea de código mencionada anteriormente para obtener el resultado deseado.

En este ejemplo, aprenderemos cómo crear e implementar un modelo predictivo que ayuda en la predicción de los precios de la vivienda mediante el script Python. El marco importante utilizado para la implementación del sistema predictivo incluye Anaconda y “Jupyter Notebook”.

Siga estos pasos para implementar un sistema predictivo:

Step 1 - Implemente el siguiente código para convertir valores de archivos csv a valores asociados.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import mpl_toolkits

%matplotlib inline
data = pd.read_csv("kc_house_data.csv")
data.head()

El código anterior genera la siguiente salida:

Step 2 - Ejecute la función de descripción para obtener los tipos de datos incluidos en los archivos csv atribuidos.

data.describe()

Step 3 - Podemos eliminar los valores asociados en función de la implementación del modelo predictivo que creamos.

train1 = data.drop(['id', 'price'],axis=1)
train1.head()

Step 4- Puede visualizar los datos según los registros. Los datos se pueden utilizar para el análisis de la ciencia de datos y la producción de libros blancos.

data.floors.value_counts().plot(kind='bar')

La biblioteca de aprendizaje automático, también llamada "SparkML" o "MLLib", consta de algoritmos de aprendizaje comunes, que incluyen clasificación, regresión, agrupación en clústeres y filtrado colaborativo.

¿Por qué aprender SparkML para Agile?

Spark se está convirtiendo en la plataforma de facto para crear algoritmos y aplicaciones de aprendizaje automático. Los desarrolladores trabajan en Spark para implementar algoritmos de máquina de manera escalable y concisa en el marco de Spark. Aprenderemos los conceptos de Machine Learning, sus utilidades y algoritmos con este framework. Agile siempre opta por un marco, que ofrece resultados breves y rápidos.

Algoritmos ML

Los algoritmos ML incluyen algoritmos de aprendizaje comunes como clasificación, regresión, agrupación y filtrado colaborativo.

Caracteristicas

Incluye extracción, transformación, reducción de dimensión y selección de características.

Oleoductos

Las canalizaciones proporcionan herramientas para construir, evaluar y ajustar las canalizaciones de aprendizaje automático.

Algoritmos populares

A continuación se muestran algunos algoritmos populares:

  • Estadísticas básicas

  • Regression

  • Classification

  • Sistema de recomendación

  • Clustering

  • Reducción de dimensionalidad

  • Extracción de características

  • Optimization

Sistema de recomendación

Un sistema de recomendación es una subclase de sistema de filtrado de información que busca la predicción de la "calificación" y la "preferencia" que un usuario sugiere para un elemento determinado.

El sistema de recomendación incluye varios sistemas de filtrado, que se utilizan de la siguiente manera:

Filtración colaborativa

Incluye la construcción de un modelo basado en el comportamiento pasado, así como en decisiones similares tomadas por otros usuarios. Este modelo de filtrado específico se utiliza para predecir elementos que un usuario está interesado en recibir.

Filtrado basado en contenido

Incluye el filtrado de características discretas de un elemento para recomendar y agregar nuevos elementos con propiedades similares.

En nuestros capítulos siguientes, nos centraremos en el uso del sistema de recomendación para resolver un problema específico y mejorar el rendimiento de la predicción desde el punto de vista de la metodología ágil.

En este capítulo, nos centraremos en solucionar un problema de predicción con la ayuda de un escenario específico.

Considere que una empresa quiere automatizar los detalles de elegibilidad del préstamo según los detalles del cliente proporcionados a través del formulario de solicitud en línea. Los detalles incluyen nombre del cliente, sexo, estado civil, monto del préstamo y otros detalles obligatorios.

Los detalles se registran en el archivo CSV como se muestra a continuación:

Ejecute el siguiente código para evaluar el problema de predicción:

import pandas as pd
from sklearn import ensemble
import numpy as np

from scipy.stats import mode
from sklearn import preprocessing,model_selection
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import LabelEncoder

#loading the dataset
data=pd.read_csv('train.csv',index_col='Loan_ID')
def num_missing(x):
   return sum(x.isnull())
 
#imputing the the missing values from the data
data['Gender'].fillna(mode(list(data['Gender'])).mode[0], inplace=True)
data['Married'].fillna(mode(list(data['Married'])).mode[0], inplace=True)
data['Self_Employed'].fillna(mode(list(data['Self_Employed'])).mode[0], inplace=True)

# print (data.apply(num_missing, axis=0))
# #imputing mean for the missing value
data['LoanAmount'].fillna(data['LoanAmount'].mean(), inplace=True)
mapping={'0':0,'1':1,'2':2,'3+':3}
data = data.replace({'Dependents':mapping})
data['Dependents'].fillna(data['Dependents'].mean(), inplace=True)
data['Loan_Amount_Term'].fillna(method='ffill',inplace=True)
data['Credit_History'].fillna(method='ffill',inplace=True)
print (data.apply(num_missing,axis=0))

#converting the cateogorical data to numbers using the label encoder
var_mod = ['Gender','Married','Education','Self_Employed','Property_Area','Loan_Status']
le = LabelEncoder()
for i in var_mod:
   le.fit(list(data[i].values))
   data[i] = le.transform(list(data[i]))
 
#Train test split
x=['Gender','Married','Education','Self_Employed','Property_Area','LoanAmount', 'Loan_Amount_Term','Credit_History','Dependents']
y=['Loan_Status']
print(data[x])
X_train,X_test,y_train,y_test=model_selection.train_test_split(data[x],data[y], test_size=0.2)

#
# #Random forest classifier
# clf=ensemble.RandomForestClassifier(n_estimators=100,
criterion='gini',max_depth=3,max_features='auto',n_jobs=-1)
clf=ensemble.RandomForestClassifier(n_estimators=200,max_features=3,min_samples
   _split=5,oob_score=True,n_jobs=-1,criterion='entropy')
	
clf.fit(X_train,y_train)
accuracy=clf.score(X_test,y_test)
print(accuracy)

Salida

El código anterior genera la siguiente salida.

En este capítulo, nos enfocaremos en construir un modelo que ayude en la predicción del desempeño del estudiante con una serie de atributos incluidos en él. El enfoque es mostrar el resultado de reprobación de los estudiantes en un examen.

Proceso

El valor objetivo de la evaluación es G3. Estos valores pueden agruparse y clasificarse además como fracaso y éxito. Si el valor de G3 es mayor o igual a 10, el alumno aprueba el examen.

Ejemplo

Considere el siguiente ejemplo en el que se ejecuta un código para predecir el rendimiento si los estudiantes:

import pandas as pd
""" Read data file as DataFrame """
df = pd.read_csv("student-mat.csv", sep=";")
""" Import ML helpers """
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import GridSearchCV, cross_val_score
from sklearn.pipeline import Pipeline
from sklearn.feature_selection import SelectKBest, chi2
from sklearn.svm import LinearSVC # Support Vector Machine Classifier model
""" Split Data into Training and Testing Sets """
def split_data(X, Y):
 return train_test_split(X, Y, test_size=0.2, random_state=17)
""" Confusion Matrix """
def confuse(y_true, y_pred):
 cm = confusion_matrix(y_true=y_true, y_pred=y_pred)
 # print("\nConfusion Matrix: \n", cm)
  fpr(cm)
 ffr(cm)
""" False Pass Rate """
def fpr(confusion_matrix):
 fp = confusion_matrix[0][1]
 tf = confusion_matrix[0][0]
 rate = float(fp) / (fp + tf)
 print("False Pass Rate: ", rate)
""" False Fail Rate """
def ffr(confusion_matrix):
 ff = confusion_matrix[1][0]
 tp = confusion_matrix[1][1]
 rate = float(ff) / (ff + tp)
 print("False Fail Rate: ", rate)
 return rate
""" Train Model and Print Score """
def train_and_score(X, y):
 X_train, X_test, y_train, y_test = split_data(X, y)
 clf = Pipeline([
 ('reduce_dim', SelectKBest(chi2, k=2)),
 ('train', LinearSVC(C=100))
 ])
 scores = cross_val_score(clf, X_train, y_train, cv=5, n_jobs=2)
 print("Mean Model Accuracy:", np.array(scores).mean())
 clf.fit(X_train, y_train)
 confuse(y_test, clf.predict(X_test))
 print()
""" Main Program """
def main():
 print("\nStudent Performance Prediction")
 # For each feature, encode to categorical values
 class_le = LabelEncoder()
 for column in df[["school", "sex", "address", "famsize", "Pstatus", "Mjob",
"Fjob", "reason", "guardian", "schoolsup", "famsup", "paid", "activities",
"nursery", "higher", "internet", "romantic"]].columns:
 df[column] = class_le.fit_transform(df[column].values)
 # Encode G1, G2, G3 as pass or fail binary values
 for i, row in df.iterrows():
 if row["G1"] >= 10:
 df["G1"][i] = 1
 else:
 df["G1"][i] = 0
 if row["G2"] >= 10:
 df["G2"][i] = 1
 else:
 df["G2"][i] = 0
 if row["G3"] >= 10:
 df["G3"][i] = 1
 else:
 df["G3"][i] = 0
 # Target values are G3
 y = df.pop("G3")
 # Feature set is remaining features
 X = df
 print("\n\nModel Accuracy Knowing G1 & G2 Scores")
 print("=====================================")
 train_and_score(X, y)
 # Remove grade report 2
 X.drop(["G2"], axis = 1, inplace=True)
 print("\n\nModel Accuracy Knowing Only G1 Score")
 print("=====================================")
 train_and_score(X, y)
 # Remove grade report 1
 X.drop(["G1"], axis=1, inplace=True)
 print("\n\nModel Accuracy Without Knowing Scores")
 print("=====================================")
 train_and_score(X, y)
main()

Salida

El código anterior genera la salida como se muestra a continuación

La predicción se trata con referencia a una sola variable. Con referencia a una variable, la predicción del rendimiento del estudiante es como se muestra a continuación:

La metodología ágil ayuda a las organizaciones a adaptarse al cambio, competir en el mercado y construir productos de alta calidad. Se observa que las organizaciones maduran con metodología ágil, con cambio creciente en los requerimientos de los clientes. La compilación y sincronización de datos con equipos de organización ágiles es importante para acumular datos según la cartera requerida.

Construye un mejor plan

El rendimiento ágil estandarizado depende únicamente del plan. El esquema de datos ordenado potencia la productividad, la calidad y la capacidad de respuesta del progreso de la organización. El nivel de consistencia de los datos se mantiene con escenarios históricos y en tiempo real.

Considere el siguiente diagrama para comprender el ciclo del experimento de ciencia de datos:

La ciencia de datos implica el análisis de requisitos seguido de la creación de algoritmos basados ​​en los mismos. Una vez que los algoritmos están diseñados junto con la configuración ambiental, un usuario puede crear experimentos y recopilar datos para un mejor análisis.

Esta ideología computa el último sprint de ágil, que se llama "acciones".

Actionsimplica todas las tareas obligatorias para el último sprint o nivel de metodología ágil. El seguimiento de las fases de la ciencia de datos (con respecto al ciclo de vida) se puede mantener con tarjetas de historia como elementos de acción.

Análisis predictivo y big data

El futuro de la planificación radica completamente en la personalización de los informes de datos con los datos recopilados del análisis. También incluirá la manipulación con análisis de big data. Con la ayuda de macrodatos, se pueden analizar piezas discretas de información, de manera efectiva, dividiendo y dividiendo las métricas de la organización. El análisis siempre se considera una mejor solución.

Hay varias metodologías utilizadas en el proceso de desarrollo ágil. Estas metodologías también se pueden utilizar para el proceso de investigación de la ciencia de datos.

El diagrama de flujo que se muestra a continuación muestra las diferentes metodologías:

Melé

En términos de desarrollo de software, scrum significa administrar el trabajo con un equipo pequeño y administrar un proyecto específico para revelar las fortalezas y debilidades del proyecto.

Metodologías cristalinas

Las metodologías de Crystal incluyen técnicas innovadoras para la gestión y ejecución de productos. Con este método, los equipos pueden realizar tareas similares de diferentes maneras. La familia Crystal es una de las metodologías más fáciles de aplicar.

Método de desarrollo de software dinámico

Este marco de entrega se utiliza principalmente para implementar el sistema de conocimiento actual en metodología de software.

Desarrollo impulsado por el futuro

El enfoque de este ciclo de vida de desarrollo son las características involucradas en el proyecto. Funciona mejor para el modelado de objetos de dominio, el desarrollo de código y características para la propiedad.

Desarrollo de software ajustado

Programación extrema

La programación extrema es una metodología de desarrollo de software única, que se centra en mejorar la calidad del software. Esto se hace efectivo cuando el cliente no está seguro de la funcionalidad de algún proyecto.

Las metodologías ágiles se están arraigando en la corriente de la ciencia de datos y se considera como la metodología de software importante. Con una autoorganización ágil, los equipos multifuncionales pueden trabajar juntos de manera eficaz. Como se mencionó, hay seis categorías principales de desarrollo ágil y cada una de ellas se puede transmitir con ciencia de datos según los requisitos. La ciencia de datos implica un proceso iterativo de información estadística. Agile ayuda a desglosar los módulos de ciencia de datos y ayuda a procesar iteraciones y sprints de manera efectiva.

El proceso de Agile Data Science es una forma asombrosa de comprender cómo y por qué se implementa el módulo de ciencia de datos. Resuelve problemas de manera creativa.