Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
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:
Seitenzahl: 542
Veröffentlichungsjahr: 2023
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Ciencia de datos desde cero
Principios básicos con Python
2.ª Edición
Joel Grus
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.
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.
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
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
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.
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.
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.
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).
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.
