Ciencia de datos desde cero. Segunda edición - Joel Grus - E-Book

Ciencia de datos desde cero. Segunda edición E-Book

Joel Grus

0,0

Beschreibung

Para aprender de verdad ciencia de datos, no solamente es necesario dominar las herramientas (librerías de ciencia de datos, frameworks, módulos y kits de herramientas), sino también conviene comprender las ideas y principios subyacentes. Actualizada para Python 3.6, esta segunda edición de Ciencia de datos desde cero muestra cómo funcionan estas herramientas y algoritmos implementándolos desde el principio. Si ya tiene aptitudes para las matemáticas y ciertas habilidades de programación, el autor, Joel Grus, le ayudará a familiarizarse con las mates y las estadísticas, que son el núcleo de la ciencia de datos, y con las habilidades informáticas necesarias para iniciarse como científico de datos. Repleto de nueva información sobre deep learning (aprendizaje profundo), estadísticas y procesamiento del lenguaje natural, este libro actualizado le muestra cómo sacar lo mejor de la sobreabundancia de datos que actualmente nos rodea.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 542

Veröffentlichungsjahr: 2023

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Ciencia de datos desde cero

Principios básicos con Python

2.ª Edición

Joel Grus

Agradecimientos

En primer lugar, quiero agradecer a Mike Loukides por aceptar mi propuesta para este libro (y por insistir en que lo reduzca a un tamaño razonable). Habría sido muy fácil para él decir: “¿Quién es esta persona que no para de enviarme correos electrónicos con capítulos de muestra, y qué hago para deshacerme de él?”. Pero me siento muy agradecido de que no lo dijera. También quisiera agradecer a mis editoras, Michele Cronin y Marie Beaugureau, por guiarme a lo largo del proceso de la publicación de libros y conseguir el libro en un estado mucho mejor de lo que jamás yo hubiera podido lograr por mí mismo.

No podría haber escrito este libro si nunca hubiera aprendido ciencia de datos o data science, y probablemente no habría aprendido ciencia de datos si no hubiera sido por la influencia de Dave Hsu, Igor Tatarinov, John Rauser y el resto de la banda Farecast (hace ya tanto tiempo que, en ese momento, la ciencia de datos ¡ni siquiera se conocía con ese nombre!). Hay que reconocerles también el gran mérito que tienen los buenos chicos de Coursera y DataTau.

Doy también las gracias a mis lectores y revisores beta. Jay Fundling encontró una gran cantidad de errores y resaltó muchas explicaciones no claras, y el libro es mucho mejor (y mucho más correcto) gracias a él. Debashis Shosh es un héroe por comprobar la sensatez de todas mis estadísticas. Andrew Musselman sugirió bajar el tono “la gente que prefiere R a Python son unos inmorales” del libro, lo que creo que finalmente acabó siendo un consejo bastante bueno. Trey Causey, Ryan Matthew Balfanz, Loris Mularoni, Núria Pujol, Rob Jefferson, Mary Pat Campbell, Zach Geary, Denise Mauldin, Jimmy O’Donnell y Wendy Grus proporcionaron también unos comentarios de gran valor. Gracias a todos los que leyeron la primera edición y ayudaron a que este libro fuera mejor. Los errores que puedan quedar son, por supuesto, responsabilidad mía.

Le debo mucho a la comunidad de Twitter #datascience por exponerme a un montón de conceptos nuevos, presentarme a mucha gente estupenda y hacerme sentir tan manta, que se me ocurrió escribir un libro para compensarlo. Agradezco especialmente a Trey Causey (de nuevo) por recordarme (sin darse cuenta) incluir un capítulo sobre álgebra lineal y a Sean J. Taylor por señalar (sin darse cuenta) un par de enormes lapsus en el capítulo “Trabajando con datos”.

Por encima de todo, le debo una tonelada de agradecimientos a Ganga y Madeline. La única cosa más difícil que escribir un libro es vivir con alguien que esté escribiendo un libro, y no podría haberlo logrado sin su apoyo.

Sobre el autor

Joel Grus es ingeniero investigador en el Allen Institute for AI. Anteriormente trabajó como ingeniero de software en Google y como científico de datos en varias startups. Vive en Seattle, donde habitualmente asiste a podcasts sobre ciencia de datos. Tiene un blog que actualiza ocasionalmente en joelgrus.com, pero se pasa el día tuiteando en @joelgrus.

Índice

Agradecimientos

Sobre el autor

Prefacio a la segunda edición

Convenciones empleadas en este libro

Uso del código de ejemplo

Sobre la imagen de cubierta

Prefacio a la primera edición

Ciencia de datos o data science

Partir de cero

1. Introducción

El ascenso de los datos

¿Qué es la ciencia de datos o data science?

Hipótesis motivadora: DataSciencester

Localizar los conectores clave

Científicos de datos que podría conocer

Salarios y experiencia

Cuentas de pago

Temas de interés

Sigamos adelante

2. Un curso acelerado de Python

El zen de Python

Conseguir Python

Entornos virtuales

Formato con espacios en blanco

Módulos

Funciones

Cadenas

Excepciones

Listas

Tuplas

Diccionarios

defaultdict

Contadores

Conjuntos

Flujo de control

Verdadero o falso

Ordenar

Comprensiones de listas

Pruebas automatizadas y assert

Programación orientada a objetos

Iterables y generadores

Aleatoriedad

Expresiones regulares

Programación funcional

Empaquetado y desempaquetado de argumentos

args y kwargs

Anotaciones de tipos

Cómo escribir anotaciones de tipos

Bienvenido a DataSciencester

Para saber más

3. Visualizar datos

matplotlib

Gráficos de barras

Gráficos de líneas

Gráficos de dispersión

Para saber más

4. Álgebra lineal

Vectores

Matrices

Para saber más

5. Estadística

Describir un solo conjunto de datos

Tendencias centrales

Dispersión

Correlación

La paradoja de Simpson

Otras advertencias sobre la correlación

Correlación y causación

Para saber más

6. Probabilidad

Dependencia e independencia

Probabilidad condicional

Teorema de Bayes

Variables aleatorias

Distribuciones continuas

La distribución normal

El teorema central del límite

Para saber más

7. Hipótesis e inferencia

Comprobación de hipótesis estadísticas

Ejemplo: Lanzar una moneda

Valores p

Intervalos de confianza

p-hacking o dragado de datos

Ejemplo: Realizar una prueba A/B

Inferencia bayesiana

Para saber más

8. Descenso de gradiente

La idea tras el descenso de gradiente

Estimar el gradiente

Utilizar el gradiente

Elegir el tamaño de paso adecuado

Utilizar descenso de gradiente para ajustar modelos

Descenso de gradiente en minilotes y estocástico

Para saber más

9. Obtener datos

stdin y stdout

Leer archivos

Conocimientos básicos de los archivos de texto

Archivos delimitados

Raspado web

HTML y su análisis

Ejemplo: Controlar el congreso

Utilizar API

JSON y XML

Utilizar una API no autenticada

Encontrar API

Ejemplo: Utilizar las API de Twitter

Obtener credenciales

Para saber más

10. Trabajar con datos

Explorar los datos

Explorar datos unidimensionales

Dos dimensiones

Muchas dimensiones

Utilizar NamedTuples

Clases de datos

Limpiar y preparar datos

Manipular datos

Redimensionar

Un inciso: tqdm

Reducción de dimensionalidad

Para saber más

11. Machine learning (aprendizaje automático)

Modelos

¿Qué es el machine learning?

Sobreajuste y subajuste

Exactitud

El término medio entre sesgo y varianza

Extracción y selección de características

Para saber más

12. k vecinos más cercanos

El modelo

Ejemplo: el conjunto de datos iris

La maldición de la dimensionalidad

Para saber más

13. Naive Bayes

Un filtro de spam realmente tonto

Un filtro de spam más sofisticado

Implementación

A probar nuestro modelo

Utilizar nuestro modelo

Para saber más

14. Regresión lineal simple

El modelo

Utilizar descenso de gradiente

Estimación por máxima verosimilitud

Para saber más

15. Regresión múltiple

El modelo

Otros supuestos del modelo de mínimos cuadrados

Ajustar el modelo

Interpretar el modelo

Bondad de ajuste

Digresión: el bootstrap

Errores estándares de coeficientes de regresión

Regularización

Para saber más

16. Regresión logística

El problema

La función logística

Aplicar el modelo

Bondad de ajuste

Máquinas de vectores de soporte

Para saber más

17. Árboles de decisión

¿Qué es un árbol de decisión?

Entropía

La entropía de una partición

Crear un árbol de decisión

Ahora, a combinarlo todo

Bosques aleatorios

Para saber más

18. Redes neuronales

Perceptrones

Redes neuronales prealimentadas

Retropropagación

Ejemplo: Fizz Buzz

Para saber más

19. Deep learning (aprendizaje profundo)

El tensor

La capa de abstracción

La capa lineal

Redes neuronales como una secuencia de capas

Pérdida y optimización

Ejemplo: XOR revisada

Otras funciones de activación

Ejemplo: FizzBuzz revisado

Funciones softmax y entropía cruzada

Dropout

Ejemplo: MNIST

Guardar y cargar modelos

Para saber más

20. Agrupamiento (clustering)

La idea

El modelo

Ejemplo: Encuentros

Eligiendo k

Ejemplo: agrupando colores

Agrupamiento jerárquico de abajo a arriba

Para saber más

21. Procesamiento del lenguaje natural

Nubes de palabras

Modelos de lenguaje n-Gram

Gramáticas

Un inciso: muestreo de Gibbs

Modelos de temas

Vectores de palabras

Redes neuronales recurrentes

Ejemplo: utilizar una RNN a nivel de carácter

Para saber más

22. Análisis de redes

Centralidad de intermediación

Centralidad de vector propio

Multiplicación de matrices

Centralidad

Grafos dirigidos y PageRank

Para saber más

23. Sistemas recomendadores

Método manual

Recomendar lo que es popular

Filtrado colaborativo basado en usuarios

Filtrado colaborativo basado en artículos

Factorización de matrices

Para saber más

24. Bases de datos y SQL

CREATE TABLE e INSERT

UPDATE

DELETE

SELECT

GROUP BY

ORDER BY

JOIN

Subconsultas

Índices

Optimización de consultas

NoSQL

Para saber más

25. MapReduce

Ejemplo: Recuento de palabras

¿Por qué MapReduce?

MapReduce, más general

Ejemplo: Analizar actualizaciones de estado

Ejemplo: Multiplicación de matrices

Un inciso: Combinadores

Para saber más

26. La ética de los datos

¿Qué es la ética de los datos?

No, ahora en serio, ¿qué es la ética de datos?

¿Debo preocuparme de la ética de los datos?

Crear productos de datos de mala calidad

Compromiso entre precisión e imparcialidad

Colaboración

Capacidad de interpretación

Recomendaciones

Datos sesgados

Protección de datos

En resumen

Para saber más

27. Sigamos haciendo ciencia de datos

IPython

Matemáticas

No desde cero

NumPy

pandas

scikit-learn

Visualización

R

Deep learning (aprendizaje profundo)

Encontrar datos

Haga ciencia de datos

Hacker News

Camiones de bomberos

Camisetas

Tuits en un globo terráqueo

¿Y usted?

Créditos

Prefacio a la segunda edición

Me siento excepcionalmente orgulloso de la primera edición de este libro. Ha resultado ser en buena parte el libro que yo quería que fuera. Pero varios años de desarrollos en ciencia de datos, de progreso en el ecosistema Python y de crecimiento personal como desarrollador y educador han cambiado lo que creo que debe ser un primer libro sobre ciencia de datos.

En la vida no hay vuelta atrás, pero en la escritura de libros sí hay segundas ediciones.

De acuerdo con esto, he reescrito todo el código y los ejemplos utilizando Python 3.6 (y muchas de sus funciones más recientes, como las anotaciones de tipos). En el libro hago continuamente énfasis en escribir código limpio. He reemplazado algunos de los ejemplos de la primera edición por otros más realistas, utilizando conjuntos de datos “reales”. He añadido nuevo material en temas como deep learning, estadísticas y procesamiento del lenguaje natural, que se corresponden con cosas con las que es más probable que los científicos de datos de hoy en día trabajen (también he eliminado otras informaciones que parecían ser menos relevantes). Y he repasado el libro de una forma muy concienzuda, arreglando errores, reescribiendo explicaciones que eran menos claras de lo que podrían ser y actualizando algunos de los chistes.

La primera edición fue un gran libro, y esta edición es aún mejor. ¡Disfrútela!

Joel Grus

Seattle, WA

2019

Convenciones empleadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

■Cursiva: Es un tipo que se usa para diferenciar términos anglosajones o de uso poco común. También se usa para destacar algún concepto.

■Negrita: Le ayudará a localizar rápidamente elementos como las combinaciones de teclas.

■Fuenteespecial: Nombres de botones y opciones de programas. Por ejemplo, Aceptar para hacer referencia a un botón con ese título.

■Monoespacial: Utilizado para el código y dentro de los párrafos para hacer referencia a elementos como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, declaraciones y palabras clave.

También encontrará a lo largo del libro recuadros con elementos destacados sobre el texto normal, comunicándole de manera breve y rápida algún concepto relacionado con lo que está leyendo, un truco o advirtiéndole de algo.

Aunque el termino “data science” es de uso generalizado y reconocido en todo el mundo, hemos decidido traducir este termino por “ciencia de datos” que es como se conoce a este área de conocimiento en castellano. Hemos preferido utilizar el termino en castellano por respeto a la riqueza de nuestra lengua y a los usuarios de los países de habla hispana.

Uso del código de ejemplo

Se puede descargar material adicional (ejemplos de código, ejercicios, etc.) de la página web de Anaya Multimedia (http://www.anayamultimedia.es). Vaya al botón SeleccionaComplemento de la ficha del libro, donde podrá descargar el contenido para poder utilizarlo directamente. También puede descargar el material de la página web original del libro: https://github.com/joelgrus/data-science-from-scratch.

Este libro ha sido creado para ayudarle en su trabajo. En general, puede utilizar el código de ejemplo incluido en sus programas y en su documentación. No es necesario contactar con la editorial para solicitar permiso a menos que esté reproduciendo una gran cantidad del código. Por ejemplo, escribir un programa que utilice varios fragmentos de código tomados de este libro no requiere permiso. Sin embargo, vender o distribuir un CD-ROM de ejemplos de los libros de O’Reilly sí lo requiere. Responder una pregunta citando este libro y empleando textualmente código de ejemplo incluido en él no requiere permiso. Pero incorporar una importante cantidad de código de ejemplo de este libro en la documentación de su producto sí lo requeriría.

Sobre la imagen de cubierta

El animal de la portada de este libro es una perdiz nival o lagópodo alpino (Lagopus muta). Este robusto miembro de la familia de los faisánidos, del tamaño de un pollo, vive en la tundra del hemisferio norte, en las regiones árticas y subárticas de Eurasia y Norteamérica. Se alimenta de lo que encuentra en el suelo, recorriendo las praderas con sus patas bien emplumadas, comiendo brotes de abedul y sauce, así como semillas, flores, hojas y bayas. Los polluelos de perdiz nival también comen insectos.

Los lagópodos alpinos son muy conocidos por los sorprendentes cambios anuales que sufre su enigmático camuflaje, habiendo evolucionado para mudar sus plumas blancas y pardas varias veces en el transcurso de un año y así adaptarse mejor a los cambiantes colores estacionales de su entorno. En invierno tienen plumas blancas; en primavera y otoño, cuando el manto nevado se mezcla con la dehesa, su plumaje mezcla los colores blanco y pardo y, en verano, sus plumas, pardas por completo, coinciden con la variada coloración de la tundra. Con este camuflaje, las hembras pueden incubar sus huevos, que dejan en nidos sobre el suelo, siendo casi invisibles.

Las perdices nivales macho adultas tienen también una especie de cresta roja sobre sus ojos. Durante la temporada de cría la utilizan para el cortejo, así como en los combates contra otros machos (existen estudios que demuestran una correlación entre el tamaño de la cresta y el nivel de testosterona de los machos).

La población de perdiz de las nieves está actualmente en declive, aunque en su hábitat natural siguen siendo comunes (pero difíciles de observar). Tienen muchos depredadores, entre otros el zorro ártico, el gerifalte, la gaviota común y la gaviota salteadora o escua. Además, con el tiempo, el cambio climático puede afectar negativamente a sus cambios de color estacionales.

Muchos de los animales de las portadas de O’Reilly están en peligro de extinción; todos ellos son importantes para el mundo.

La imagen de la portada procede de la obra Cassell’s Book of Birds (1875), de Thomas Rymer Jones.

Prefacio a la primera edición

Ciencia de datos o data science

El trabajo de científico de datos ha sido denominado “el empleo más sexy del siglo XXI”,1 presuntamente por alguien que no ha visitado nunca un parque de bomberos. Sin embargo, la ciencia de datos es un campo en pleno auge y crecimiento, y no hace falta ser muy perspicaz para encontrar analistas prediciendo sin descanso que, en los próximos 10 años, necesitaremos miles de millones de científicos de datos más de los que tenemos ahora.

Pero ¿qué es la ciencia de datos? Después de todo, no podemos crear científicos de datos si no sabemos cuál es su trabajo. Según un diagrama de Venn,2 que es en cierto modo famoso en este sector, la ciencia de datos reside en la intersección entre:

■Habilidades informáticas a nivel de hacker.

■Conocimiento de matemáticas y estadística.

■Experiencia relevante.

Aunque mi intención inicial era escribir un libro que hablara sobre estos tres puntos, rápidamente me di cuenta de que un tratamiento en profundidad de la expresión “experiencia relevante” requeriría cientos de miles de páginas. En ese momento decidí centrarme en los dos primeros. Mi objetivo es ayudar a los lectores a desarrollar las habilidades informáticas a nivel de hacker que necesitarán para empezar a trabajar en la ciencia de datos. Pero también es permitirles sentirse cómodos con las matemáticas y la estadística, que son el núcleo de la ciencia de datos.

Quizá esta sea una aspiración demasiado elevada para un libro. La mejor forma de aprender las habilidades informáticas de un hacker es hackeando cosas. Leyendo este libro, los lectores podrán llegar a comprender bastante bien la forma en la que yo hackeo cosas, que no tiene por qué ser necesariamente la suya. También conocerán bastante bien algunas de las herramientas que utilizo, que no han de ser obligadamente las mejores para ellos. Y entenderán bien el modo en que yo abordo los problemas de datos, que tampoco tiene por qué ser el mejor modo para ellos. La intención (y la esperanza) es que mis ejemplos les inspiren a probar las cosas a su manera. Todo el código y los datos del libro están disponibles en GitHub3 para que puedan ponerse manos a la obra.

De forma similar, la mejor manera de aprender matemáticas es haciendo matemáticas. Este no es rotundamente un libro de mates, y en su mayor parte no estaremos “haciendo matemáticas”. Sin embargo, no se puede hacer ciencia de datos de verdad sin ciertos conocimientos de probabilidad, estadística y álgebra lineal. Esto significa que, donde corresponda, profundizaremos en ecuaciones matemáticas, intuición matemática, axiomas matemáticos y versiones caricaturizadas de grandes ideas matemáticas. Espero que los lectores no teman sumergirse conmigo.

A lo largo de todo el libro también espero dar a entender que jugar con datos es divertido porque, bueno, ¡jugar con datos realmente lo es! (especialmente si lo comparamos con algunas alternativas, como hacer la declaración de la renta o trabajar en una mina).

Partir de cero

Hay muchísimas librerías de ciencia de datos, frameworks, módulos y kits de herramientas que implementan de forma eficaz los algoritmos y las técnicas de ciencia de datos más conocidas (así como las menos habituales). Si alguno de mis lectores llega a ser científico de datos, acabará estando íntimamente familiarizado con NumPy, scikit-learn, pandas y todas las demás librerías existentes. Son fabulosas para hacer ciencia de datos, pero también suponen una buena forma de empezar a hacer ciencia de datos sin realmente comprender lo que es.

En este libro nos acercaremos a la ciencia de datos desde el principio de los principios. Esto significa que crearemos herramientas e implementaremos algoritmos a mano para poder comprenderlos mejor. Pensé mucho en crear implementaciones y ejemplos que fueran claros y legibles y estuvieran bien comentados. En la mayoría de los casos, las herramientas que construiremos serán esclarecedoras, pero poco prácticas. Funcionarán bien en pequeños conjuntos de datos, pero no lo harán en otros “a gran escala”. Durante todo el libro iré señalando las librerías que se podrían utilizar para aplicar estas técnicas sobre conjuntos de datos más grandes. Pero aquí no las utilizaremos.

Existe una sana discusión en torno al mejor lenguaje que se puede utilizar para aprender ciencia de datos. Mucha gente cree que es el lenguaje de programación estadístico R (de esas personas decimos que están equivocadas). Unas pocas personas sugieren Java o Scala. Sin embargo, en mi opinión, Python es la elección obvia.

Python tiene varias características que le hacen ser ideal para aprender (y hacer) ciencia de datos:

■Es gratuito.

■Es relativamente sencillo para crear código (y en particular, de comprender).

■Tiene muchas librerías asociadas a la ciencia de datos que son de gran utilidad.

Dudo si decir que Python es mi lenguaje de programación favorito. Hay otros lenguajes que encuentro más agradables, mejor diseñados o simplemente más divertidos de utilizar. Pero, aun así, cada vez que inicio un nuevo proyecto de ciencia de datos, termino utilizando Python. Cada vez que necesito crear rápidamente un prototipo de algo que simplemente funcione, termino utilizando Python. Y cada vez que quiero demostrar conceptos de ciencia de datos de una forma clara y sencilla de comprender, acabo por utilizar Python. De ahí que este libro utilice Python.

El objetivo de este libro no es enseñar Python (aunque es casi seguro que leyéndolo se aprende un poco). Llevaré a los lectores a lo largo de un curso acelerado de un capítulo de duración, que resalta las características más importantes para nuestros propósitos, pero, si no se sabe nada sobre programar en Python (o sobre programar en general), entonces quizá convenga complementar este libro con algún tutorial de tipo “Python para principiantes”.

El resto de nuestra introducción a la ciencia de datos seguirá este mismo enfoque, es decir, entrar en detalle donde ello parezca ser crucial o esclarecedor, pero en otras ocasiones dejarle al lector los detalles para que investigue por sí mismo (o lo busque en la Wikipedia).

Durante años he formado a un buen número de científicos de datos. Aunque no todos han evolucionado para convertirse en revolucionarias estrellas del rock ninja de los datos, les he dejado siendo mejores científicos de datos de lo que eran cuando les conocí. Y yo he llegado a creer que cualquiera que tenga una cierta cantidad de aptitud matemática y una determinada habilidad para programar tiene los fundamentos necesarios para hacer ciencia de datos. Todo lo que se necesita es una mente curiosa, voluntad para trabajar duro y este libro. De ahí este libro.

1https://hbr.org/2012/10/data-scientist-the-sexiest-job-of-the-21st-century.

2http://drewconway.com/zia/2013/3/26/the-data-science-venn-diagram.

3https://github.com/joelgrus/data-science-from-scratch.