Data Analysis From Scratch With Python - Beginner Guide Using Python, Pandas, NumPy, Scikit-Learn, IPython, TensorFlow and Matplotlib (PDFDrive)
Data Analysis From Scratch With Python - Beginner Guide Using Python, Pandas, NumPy, Scikit-Learn, IPython, TensorFlow and Matplotlib (PDFDrive)
Peters Morgan
Machine Translated by Google
Cómo contactarnos
Si encuentra algún daño, problemas de edición o cualquier otro problema en este libro, notifique
inmediatamente a nuestro servicio de atención al cliente por correo
electrónico a: [email protected]
Prefacio
“La humanidad está al borde de la esclavitud digital a manos de la IA y las tecnologías biométricas. Una forma de
prevenir eso es desarrollar módulos incorporados de profundos sentimientos de amor y compasión en los algoritmos
de aprendizaje”.
― Amit Ray, Superinteligencia Artificial Compasiva AI 5.0 AI con Blockchain, BMI, Drone, IOT y Tecnologías
Biométricas
Si está buscando una guía completa del lenguaje Python y su biblioteca que lo ayude a convertirse
en un analista de datos efectivo, este libro es para usted.
Este libro contiene la programación de Python que necesita para el análisis de datos.
Los libros de ciencias de la IA exploran todos los aspectos de la inteligencia artificial y la ciencia de
datos utilizando lenguajes de programación de ciencias de la computación como Python y R.
Nuestros libros pueden ser los mejores para principiantes; es una guía paso a paso para cualquier
persona que quiera empezar a aprender Inteligencia Artificial y Ciencia de Datos desde cero. Te
ayudará a preparar una base sólida y aprender cualquier otro curso de alto nivel será fácil para ti.
El libro brinda instrucciones completas para manipular, procesar, limpiar, modelar y procesar
conjuntos de datos en Python. Esta es una guía práctica con estudios de casos prácticos de
problemas de análisis de datos de manera efectiva. Aprenderá pandas, NumPy, IPython y Júpiter en
el proceso.
Este libro es una introducción práctica a las herramientas de ciencia de datos en Python. Es ideal
para analistas principiantes en Python y para programadores de Python nuevos en ciencia de datos
e informática. En lugar de fórmulas matemáticas difíciles, este libro contiene varios gráficos e
imágenes.
Machine Translated by Google
ISBN13: 9781721942817
ISBN10: 1721942815
El contenido de este libro no puede ser reproducido, duplicado o transmitido sin el permiso directo por escrito del autor.
Bajo ninguna circunstancia se tendrá ninguna responsabilidad legal o culpa en contra del editor por cualquier reparación,
daño o pérdida monetaria debido a la información aquí contenida, ya sea directa o indirectamente.
Machine Translated by Google
Aviso Legal:
No puede modificar, distribuir, vender, usar, citar o parafrasear ninguna parte o el contenido de este libro sin el
consentimiento del autor.
Tenga en cuenta que la información contenida en este documento es solo para fines educativos y de entretenimiento.
No se expresa ni implica ninguna garantía de ningún tipo. Los lectores reconocen que el autor no se involucra en la
prestación de asesoramiento legal, financiero, médico o profesional. Consulte a un profesional con licencia antes de
intentar cualquiera de las técnicas descritas en este libro.
Al leer este documento, el lector acepta que bajo ninguna circunstancia el autor es responsable de ninguna pérdida,
directa o indirecta, en la que se incurra como resultado del uso de la información contenida en este documento,
incluidos, entre otros, errores, omisiones , o inexactitudes.
De AI Sciences Publisher
Machine Translated by Google
Machine Translated by Google
A mi esposa Melania
sido completado
Machine Translated by Google
Tabla de contenido
Prefacio
¿Por qué los libros de ciencias de la IA son diferentes?
De AI Sciences Publisher
Biografía del autor
Tabla de contenido
Introducción
pitón contra r
Claridad
Instalación y configuración
5. Resumen y objetivos
posibilidades
Precisión y rendimiento
6. Un ejemplo rápido
Potencial e implicaciones
Archivos CSV
Selección de características
8. Visualización de datos
Objetivo de visualización
10. Regresión
Árbol de decisión
Bosque aleatorio
11. Clasificación
Regresión logística
12. Objetivos de la
Agrupación de KMeans
Detección de anomalías
regla de asociación
A priori
Potencial y Restricciones
Uso de NLTK
Machine Translated by Google
Gracias !
Fuentes y referencias
Software, bibliotecas y lenguaje de programación
conjuntos de datos
Gracias !
Machine Translated by Google
Introducción
¿Por qué seguir leyendo? Primero, aprenderá a usar Python en el análisis de datos (que es un
poco mejor y un poco más avanzado que usar Microsoft Excel). En segundo lugar, también
aprenderá a adquirir la mentalidad de un analista de datos real (pensamiento computacional).
Más importante aún, aprenderá cómo Python y el aprendizaje automático se aplican a los
problemas del mundo real (negocios, ciencia, investigación de mercado, tecnología, fabricación,
comercio minorista, finanzas). Proporcionaremos varios ejemplos sobre cómo los métodos
modernos de análisis de datos encajan con el enfoque y la resolución de problemas modernos.
Esto es importante porque la afluencia masiva de datos nos brinda más oportunidades para
obtener información y tener un impacto en casi cualquier campo. Este fenómeno reciente también
presenta nuevos desafíos que requieren nuevas tecnologías y enfoques. Además, esto también
requiere nuevas habilidades y mentalidades para navegar con éxito a través de los desafíos y
aprovechar con éxito el máximo potencial de las oportunidades que se nos presentan.
Por ahora, olvídate de conseguir el “trabajo más sexy del siglo XXI” (científico de datos, ingeniero
de aprendizaje automático, etc.). Olvídese de los temores de que la inteligencia artificial erradique
puestos de trabajo y toda la raza humana. Se trata de aprender (en el verdadero sentido de la
palabra) y resolver problemas del mundo real.
Estamos aquí para crear soluciones y aprovechar las nuevas tecnologías para tomar mejores
decisiones y, con suerte, hacernos la vida más fácil. Y esto comienza con la construcción de una
base sólida para que podamos enfrentar mejor los desafíos y dominar conceptos avanzados.
Machine Translated by Google
Se dice que Python es un lenguaje de programación simple, claro e intuitivo. Es por eso
que muchos ingenieros y científicos eligen Python para muchas aplicaciones científicas y
numéricas. Tal vez prefieran entrar rápidamente en la tarea principal (por ejemplo,
averiguar el efecto o la correlación de una variable con un resultado) en lugar de pasar
cientos de horas aprendiendo los matices de un lenguaje de programación "complejo".
pitón contra r
Es posible que ya haya encontrado esto en Stack Overflow, Reddit, Quora y otros foros y
sitios web. Es posible que también hayas buscado otros lenguajes de programación
porque, después de todo, aprender Python o R (o cualquier otro lenguaje de programación)
requiere varias semanas y meses. Es una gran inversión de tiempo y no querrás cometer
un error.
Para quitar esto del camino, simplemente comience con Python porque las habilidades y
conceptos generales son fácilmente transferibles a otros idiomas. Bueno, en algunos
casos puede que tengas que adoptar una forma de pensar completamente nueva. Pero,
en general, saber cómo usar Python en el análisis de datos te ayudará a resolver muchos
problemas interesantes.
Aunque todo es discutible, Python sigue siendo una opción popular, especialmente entre
Machine Translated by Google
principiantes o cualquier persona que quiera mojarse los pies rápidamente con el análisis de datos y
el aprendizaje automático. Es relativamente fácil de aprender y puede sumergirse en la programación
a tiempo completo más adelante si decide que esto le conviene más.
Ahora hay muchos paquetes y herramientas que facilitan mucho el uso de Python en el análisis de
datos y el aprendizaje automático. TensorFlow (de Google), Theano, scikitlearn, numpy y pandas
son solo algunas de las cosas que hacen que la ciencia de datos sea más rápida y sencilla.
Además, los graduados universitarios pueden ingresar rápidamente a la ciencia de datos porque
muchas universidades ahora enseñan ciencias de la computación introductorias utilizando Python
como el lenguaje de programación principal. El cambio de la programación de computadoras y el
desarrollo de software puede ocurrir rápidamente porque muchas personas ya tienen las bases
adecuadas para comenzar a aprender y aplicar la programación a los desafíos de datos del mundo
real.
Otra razón para el uso generalizado de Python es que existen innumerables recursos que le dirán
cómo hacer casi cualquier cosa. Si tienes alguna duda, es muy probable que alguien más ya te la
haya preguntado y otro te la haya resuelto (Google y Stack Overflow son tus amigos). Esto hace que
Python sea aún más popular debido a la disponibilidad de recursos en línea.
Claridad
Debido a la facilidad de aprendizaje y uso de Python (en parte debido a la claridad de su sintaxis),
los profesionales pueden concentrarse en los aspectos más importantes de sus proyectos y
problemas. Por ejemplo, podrían usar numpy, scikitlearn y TensorFlow para obtener información
rápidamente en lugar de crear todo desde cero.
Esto proporciona otro nivel de claridad porque los profesionales pueden concentrarse más en la
naturaleza del problema y sus implicaciones. También podrían encontrar formas más eficientes de
lidiar con el problema en lugar de quedar enterrados con la tonelada de información que presenta un
determinado lenguaje de programación.
El enfoque siempre debe estar en el problema y las oportunidades que podría presentar. Solo se
necesita un gran avance para cambiar toda nuestra forma de pensar sobre un determinado desafío y
Python podría ayudar a lograrlo debido a su claridad y facilidad.
Machine Translated by Google
A estas alturas, debería comprender la sintaxis de Python, incluidas las variables, los operadores
de comparación, los operadores booleanos, las funciones, los bucles y las listas.
No tienes que ser un experto, pero realmente ayuda tener el conocimiento esencial para que el
resto sea más fluido.
No tiene que complicarlo porque la programación se trata solo de decirle a la computadora lo que
debe hacer. La computadora debería ser capaz de comprender y ejecutar con éxito sus
instrucciones. Es posible que solo necesite escribir algunas líneas de código (o modificar un poco
las existentes) para adaptarse a su aplicación.
Además, muchas de las cosas que hará en Python para el análisis de datos ya son rutinarias o
están prediseñadas para usted. En muchos casos, es posible que solo tenga que copiar y ejecutar
el código (con algunas modificaciones). Pero no te vuelvas perezoso porque entender Python y la
programación sigue siendo esencial. De esta manera, puede detectar y solucionar problemas en
caso de que aparezca un mensaje de error. Esto también te dará confianza porque sabes cómo
funciona algo.
Instalación y configuración
Si desea seguir nuestro código y ejecución, debe descargar e instalar Anaconda en su computadora.
Es gratis y está disponible para Windows, macOS y Linux. Para descargar e instalar, vaya a https://
www.anaconda.com/download/ y siga las siguientes instrucciones desde allí.
La herramienta que usaremos principalmente es Jupyter Notebook (ya viene con la instalación de
Anaconda). Es literalmente un cuaderno en el que puede escribir y ejecutar su código, así como
agregar texto y notas (razón por la cual muchos instructores en línea lo usan).
Si instaló Anaconda correctamente, debería poder iniciar Anaconda Prompt y escribir jupyter
notebook en el guión bajo parpadeante. Esto luego iniciará Jupyter Notebook usando su navegador
predeterminado. Luego puede crear un nuevo cuaderno (o editarlo más tarde) y ejecutar el código
para resultados y visualizaciones (gráficos, histogramas, etc.).
Estas son herramientas convenientes que puede usar para facilitar el estudio y el análisis.
Machine Translated by Google
y más rápido Esto también hace que sea más fácil saber qué salió mal y cómo solucionarlo
(hay mensajes de error fáciles de entender en caso de que te equivoques).
El análisis de datos a menudo significa trabajar con números y extraer información valiosa
de ellos. Pero, ¿de verdad hay que ser un experto en números y matemáticas?
El análisis de datos exitoso con Python a menudo requiere tener habilidades y conocimientos
decentes en matemáticas, programación y el dominio en el que está trabajando. Esto
significa que no tiene que ser un experto en ninguno de ellos (a menos que esté planeando
presentar un artículo en conferencias científicas internacionales).
No deje que muchos "expertos" lo engañen porque muchos de ellos son falsos o
simplemente sin experiencia. Lo que necesita saber es qué es lo siguiente que debe hacer
para que pueda terminar con éxito sus proyectos. No serás un experto en nada después de
leer todos los capítulos aquí. Pero esto es suficiente para brindarle una mejor comprensión
sobre Python y el análisis de datos.
Volvamos a la pericia matemática. Es muy probable que ya esté familiarizado con la media,
la desviación estándar y otros términos comunes en estadística. Al profundizar en el análisis
de datos, es posible que encuentre cálculo y álgebra lineal. Si tiene el tiempo y el interés
para estudiarlos, siempre puede hacerlo en cualquier momento o más tarde.
Esto puede o no darle una ventaja sobre el proyecto de análisis de datos en particular en el
que está trabajando.
Una vez más, se trata de resolver problemas. El enfoque debe estar en cómo aceptar un
desafío y superarlo con éxito. Esto se aplica a todos los campos, especialmente en los
negocios y la ciencia. No dejes que las exageraciones o los mitos te distraigan. Concéntrese
en los conceptos básicos y lo hará bien.
Machine Translated by Google
Aquí hay una revisión rápida de Python que puede usar como referencia. Si está atascado
o necesita ayuda con algo, siempre puede usar Google o Stack Overflow.
Los tipos de datos de Python son cadenas ("Eres increíble"), números enteros (3, 0, 1) y
flotantes (3.0, 12.5, 7.77).
imprimir(3+3) 7 1
5*2
20 / 5
9 % 2 #operación módulo, devuelve el resto de la división 2 ** 3 #exponenciación, 2 a la 3ra potencia Asignación de valores a las variables:
miNombre = “Thor”
x=5
años= 6
imprimir (x + y) #resultado es 11
imprimir (x * 3) #resultado es 15
edad = 25
pasatiempo = "programación"
Verdadero
>>>8 < 4
Falso
>>>8 != 4
Verdadero
>>>8 != 8 Falso
>>>8 >= 2
Verdadero >>>'gato' !=
'perro' Verdadero
Falso
>>>8 > 3 o 8 > 800
Declaraciones If, Elif y Else (para control de flujo) print(“¿Cuál es su correo electrónico?”) myEmail
= input() print(“Escriba
su contraseña.”) typedPassword =
input() if typedPassword
== contraseña guardada:
print(“ ¡Felicitaciones! Ha iniciado sesión.") else:
Tienes un mensaje.
Tienes un mensaje.
Tienes un mensaje.
Tienes un mensaje.
Tienes un mensaje.
Tienes un mensaje.
Tienes un mensaje.
Tienes un mensaje.
4
9
dieciséis
25
36
49
64
81
total = 0
para num en rango (101):
total = total + num
print (total)
all_reviews = [5, 5, 4, 4, 5, 3, 2, 5, 3, 2, 5, 4, 3, 1, 1, 2, 3, 5, 5]
positive_reviews = []
para i en all_reviews:
si i > 3:
print('Aprobado')
Machine Translated by Google
opiniones_positivas.agregar(i)
más:
imprimir('Fallo')
print(revisiones_positivas)
print(len(revisiones_positivas))
ratio_positivo = len(revisiones_positivas) / len(todas_revisiones)
print('Porcentaje de revisiones positivas: ')
print(ratio_positivas * 100)
Aprobar
Aprobar
Aprobar
Fallar
Fallar
Aprobar
Fallar
Fallar
Aprobar
Aprobar
Fallar
Fallar
Fallar
Fallar
Fallar
Aprobar
Aprobado [5, 5, 4, 4, 5, 5, 5, 4, 5,
5]
Defina la función, diga lo que debe hacer y luego utilícela o llámela más tarde.
def sumar_números(a,b):
Machine Translated by Google
imprimir (a + b)
sumar_números(5,10)
sumar_números(35,55)
def even_check(num): if
num % 2 == 0: print('El
número es par.') else:
print('Hmm, es impar.')
par_cheque(50)
par_cheque(51)
colores[0] #indexación comienza en 0, por lo que devuelve el primer elemento de la lista que es 'rojo'
print(len(mi_lista)) #devuelve 10
El resultado será:
['rojo', 'verde', 'azul', 'rosa']
Esos son solo los conceptos básicos. Es posible que aún deba consultar esto cada vez que
esté haciendo algo relacionado con Python. También puede consultar la documentación de
Python 3 para información más extensa. Se recomienda que marque eso para futuras
referencias. Para una revisión rápida, también puede consultar Learn python3 in Y Minutes.
Si quieres aprender más rápido, solo tienes que dedicar más horas cada día a aprender
Python. Tenga en cuenta que programar y aprender a pensar como un programador lleva
tiempo.
También hay varias hojas de trucos en línea que siempre puedes usar. Incluso los
programadores experimentados no lo saben todo. Además, en realidad no tienes que aprender
todo si recién estás comenzando. Siempre puede profundizar en cualquier momento si algo le
interesa o si desea destacarse en las solicitudes de empleo o en la financiación de empresas
emergentes.
Machine Translated by Google
5. Resumen y objetivos
Establezcamos algunas expectativas aquí para que sepas a dónde vas. Esto también es para presentar las
limitaciones de Python, el análisis de datos, la ciencia de datos y el aprendizaje automático (y también las
diferencias clave). Empecemos.
El análisis de datos y la ciencia de datos son casi lo mismo porque comparten el mismo objetivo, que es
obtener información de los datos y utilizarlos para una mejor toma de decisiones.
A menudo, el análisis de datos se asocia con el uso de Microsoft Excel y otras herramientas para resumir
datos y encontrar patrones. Por otro lado, la ciencia de datos a menudo se asocia con el uso de programación
para manejar conjuntos de datos masivos. De hecho, la ciencia de datos se hizo popular como resultado de
la generación de gigabytes de datos provenientes de fuentes y actividades en línea (motores de búsqueda,
redes sociales).
Ser un científico de datos suena mucho mejor que ser un analista de datos. Aunque las funciones del trabajo
pueden ser similares y superpuestas, todo se trata de descubrir patrones y generar información a partir de los
datos. También se trata de hacer preguntas inteligentes sobre la naturaleza de los datos (p. ej., ¿los puntos
de datos forman grupos orgánicos?
¿Existe realmente una conexión entre la edad y el cáncer?).
¿Qué pasa con el aprendizaje automático? A menudo, los términos ciencia de datos y aprendizaje automático
se usan indistintamente. Eso es porque este último se trata de "aprender de los datos". Al aplicar algoritmos
de aprendizaje automático, la computadora detecta patrones y usa "lo que aprendió" en nuevos datos.
Por ejemplo, queremos saber si una persona pagará sus deudas. Afortunadamente, tenemos un conjunto de
datos considerable sobre diferentes personas que pagaron su deuda o no. También hemos recopilado otros
datos (creación de perfiles de clientes) como edad, rango de ingresos, ubicación y ocupación. Cuando
aplicamos el algoritmo de aprendizaje automático apropiado, la computadora aprenderá de los datos. Luego
podemos ingresar nuevos datos (nueva información de un nuevo solicitante) y lo que la computadora aprendió
se aplicará a esos nuevos datos.
Luego, podríamos crear un programa simple que evalúe de inmediato si una persona pagará sus deudas o
no en función de su información (edad, rango de ingresos, ubicación y ocupación). Este es un ejemplo del
uso de datos para predecir la
Machine Translated by Google
comportamiento probable.
posibilidades
Aunque los algoritmos de ciencia de datos y aprendizaje automático aún están lejos de ser perfectos,
ya son útiles en muchas aplicaciones, como reconocimiento de imágenes, recomendaciones de
productos, clasificaciones de motores de búsqueda y diagnóstico médico. Y hasta este momento, los
científicos e ingenieros de todo el mundo continúan mejorando la precisión y el rendimiento de sus
herramientas, modelos y análisis.
Es posible que haya leído en noticias y artículos en línea que el aprendizaje automático y el análisis
avanzado de datos pueden cambiar el tejido de la sociedad (automatización, pérdida de empleos,
renta básica universal, adquisición de inteligencia artificial).
De hecho, la sociedad está cambiando en este momento. El aprendizaje automático detrás de escena
y el análisis continuo de datos están en funcionamiento, especialmente en los motores de búsqueda,
las redes sociales y el comercio electrónico. El aprendizaje automático ahora hace que sea más fácil
y rápido hacer lo siguiente:
Estos son posibles gracias a la disponibilidad de conjuntos de datos masivos y una gran potencia de
procesamiento. Sin embargo, el análisis de datos avanzado con Python (y el aprendizaje automático)
no es mágico. No es la solución a todos los problemas. Esto se debe a que la precisión y el rendimiento
de nuestras herramientas y modelos dependen en gran medida de la integridad de los datos y de
nuestra propia habilidad y juicio.
Machine Translated by Google
Sí, las computadoras y los algoritmos son excelentes para proporcionar respuestas. Pero también se
trata de hacer las preguntas correctas. Esas preguntas inteligentes vendrán de nosotros los humanos.
También depende de nosotros si usaremos las respuestas que nos dan nuestras computadoras.
Precisión y rendimiento
El uso más común del análisis de datos es en predicciones exitosas (pronóstico) y optimización.
¿Aumentará la demanda de nuestro producto en los próximos cinco años? ¿Cuáles son las rutas
óptimas para las entregas que conducen a los costos operativos más bajos?
Es por eso que una mejora en la precisión de incluso solo el 1 % puede traducirse en millones de dólares
de ingresos adicionales. Por ejemplo, las grandes tiendas pueden almacenar ciertos productos por
adelantado si los resultados del análisis predicen una demanda creciente.
El envío y la logística también pueden planificar mejor las rutas y los horarios para reducir el uso de
combustible y realizar entregas más rápidas.
Además de mejorar la precisión, otra prioridad es garantizar un rendimiento fiable. ¿Cómo puede
funcionar nuestro análisis en nuevos conjuntos de datos? ¿Deberíamos considerar otros factores al
analizar los datos y hacer predicciones? Nuestro trabajo siempre debe producir resultados
consistentemente precisos. De lo contrario, no es científico en absoluto porque los resultados no son
reproducibles. También podríamos disparar en la oscuridad en lugar de agotarnos en un sofisticado
análisis de datos.
Además de una previsión y optimización exitosas, el análisis de datos adecuado también puede
ayudarnos a descubrir oportunidades. Más tarde podemos darnos cuenta de que lo que hicimos también
es aplicable a otros proyectos y campos. También podemos detectar valores atípicos y patrones
interesantes si profundizamos lo suficiente. Por ejemplo, tal vez los clientes se agrupan en grupos que
son lo suficientemente grandes como para que podamos explorarlos y aprovecharlos. Tal vez haya
concentraciones inusualmente más altas de clientes que caen dentro de un cierto rango de ingresos o
nivel de gasto.
Esos son solo ejemplos típicos de las aplicaciones del análisis de datos adecuado. En el próximo
capítulo, analicemos uno de los ejemplos más utilizados para ilustrar el prometedor potencial del análisis
de datos y el aprendizaje automático. También discutiremos sus implicaciones y las oportunidades que
presenta.
Machine Translated by Google
6. Un ejemplo rápido
En este ejemplo en particular, el objetivo es predecir la especie de una flor de iris en función de la
longitud y el ancho de sus sépalos y pétalos. Primero, tenemos que crear un modelo basado en
un conjunto de datos con las medidas de las flores y sus especies correspondientes. Según
nuestro código, nuestra computadora "aprenderá de los datos" y extraerá patrones de ellos. Luego
aplicará lo que aprendió a un nuevo conjunto de datos. Veamos el código.
#importación de las bibliotecas necesarias de sklearn.datasets import load_iris from sklearn import tree
from sklearn.metrics import
precision_score import numpy as np
#tomar índices aleatorios para dividir el conjunto de datos en entrenar y probar test_ids
= np.random.permutation(len(x))
tren_x = x[id_de_prueba[:10]]
prueba_x = x[id_de_prueba[10:]]
La primera línea contiene las predicciones (0 es Iris setosa, 1 es Iris versicolor, 2 es Iris virginica). La
segunda línea contiene las especies de flores reales como se indica en el conjunto de datos. Observe
que la precisión de la predicción es del 100 %, lo que significa que predijimos correctamente la especie
de cada flor.
Todo esto puede parecer confuso al principio. Lo que debe comprender es que el objetivo aquí es crear
un modelo que prediga la especie de una flor. Para hacer eso, dividimos los datos en conjuntos de
entrenamiento y prueba. Ejecutamos el algoritmo en el conjunto de entrenamiento y lo usamos contra
el conjunto de prueba para conocer la precisión. El resultado es que podemos predecir la especie de la
flor en el conjunto de prueba en función de lo que la computadora aprendió del conjunto de entrenamiento.
Potencial e implicaciones
Es un ejemplo rápido y sencillo. Pero su potencial e implicaciones pueden ser enormes. Con solo unas
pocas modificaciones, puede aplicar el flujo de trabajo a una amplia variedad de tareas y problemas.
Por ejemplo, podríamos aplicar la misma metodología en otras especies de flores, plantas y animales.
También podemos aplicar esto en otros problemas de clasificación (más sobre esto más adelante),
como determinar si un cáncer es benigno o maligno, si una persona es un cliente muy probable o si hay
un rostro humano en la foto.
El desafío aquí es obtener suficientes datos de calidad para que nuestra computadora pueda obtener
un "buen entrenamiento" de manera adecuada. Es una metodología común aprender primero del
conjunto de entrenamiento y luego aplicar el aprendizaje en el conjunto de prueba y posiblemente
nuevos datos en el futuro (esta es la esencia del aprendizaje automático).
Ahora es obvio por qué muchas personas están entusiasmadas con el verdadero potencial del análisis
de datos y el aprendizaje automático. Con suficientes datos, podemos crear
Machine Translated by Google
En aquel entonces, el análisis de datos se usaba mucho para estudiar el pasado y preparar informes.
Pero ahora, se puede usar instantáneamente para predecir resultados en tiempo real.
Este es el verdadero poder de los datos, en el que podemos usarlos para tomar decisiones rápidas e
inteligentes.
Muchos expertos están de acuerdo en que todavía estamos arañando la superficie del poder de
realizar análisis de datos utilizando conjuntos de datos significativamente grandes. En los próximos
años, podremos encontrar aplicaciones nunca antes pensadas. Muchas herramientas y enfoques
también quedarán obsoletos como resultado de estos cambios.
Pero muchas cosas seguirán igual y los principios siempre estarán ahí.
Por eso, en los capítulos siguientes, nos centraremos más en entrar en la mentalidad de un analista
de datos experto. Exploraremos algunos enfoques para hacer las cosas, pero estos solo se utilizarán
para ilustrar puntos importantes y atemporales.
Por ejemplo, el flujo de trabajo y el proceso generales en el análisis de datos involucran lo siguiente:
• Identificar el problema (hacer las preguntas correctas) • Obtener y procesar datos • Visualizar datos
• Elegir un enfoque y algoritmo • Evaluar el resultado • Probar otros enfoques y comparar los
resultados • Saber si los resultados son lo suficientemente buenos (saber cuándo parar) Es bueno
determinar primero el objetivo del proyecto para que podamos establecer expectativas y límites
claros en nuestro proyecto. En segundo lugar, recopilemos datos (o obtengamos acceso a ellos) para
que podamos comenzar el análisis adecuado. Hagámoslo en el próximo capítulo.
Machine Translated by Google
Basura dentro basura fuera. Esto es cierto especialmente en el análisis de datos. Después de
todo, la precisión de nuestro análisis depende en gran medida de la calidad de nuestros datos. Si
metemos basura, esperemos que salga basura.
Es por eso que los analistas de datos y los ingenieros de aprendizaje automático dedican más
tiempo a obtener y procesar datos de calidad. Para lograr esto, los datos deben estar en el formato
adecuado para que puedan utilizarse para el análisis y otros fines. A continuación, los datos deben
procesarse correctamente para que podamos aplicarles algoritmos y asegurarnos de que estamos
haciendo un análisis adecuado.
Archivos CSV
Los archivos CSV son quizás el formato de datos más común que encontrará en la ciencia de
datos y el aprendizaje automático (especialmente cuando usa Python). CSV significa valores
separados por comas. Los valores en diferentes columnas están separados por comas. He aquí
un ejemplo: Producto, Precio
repollo, 6.8
lechuga, 7.2
tomate, 4.2
Edad, Tenencia….
1,15634602,Hargrave,619,Francia,Femenino,42,2,0,1,1,1,101348.88,1
2,15647311,Hill,608,España,Femenino,41,1,83807.86,1,0,1 ,112542.58,0
3,15619304,Onio,502,Francia,Mujer,42,8,159660.8,3,1,0,113931.57,1
4,15701354,Boni,699,Francia,Mujer,39,1,0,2 ,0,0,93826.63,0
5,15737888,Mitchell,850,España,Mujer,43,2,125510.82,1,1,1,79084.1,0
6,15574012,Chu,645,España,Hombre,44,8 ,113755.78,2,1,0,149756.71,1
7,15592531,Bartlett,822,Francia,Hombre,50,7,0,2,1,1,10062.8,0
8,15656148,Obinna,376,Alemania,Mujer ,29,4,115046.74,4,1,0,119346.88,1
9,15792365,He,501,Francia,Masculino,44,4,142051.07,2,0,1,74940.5,0
10,15592389,H?, 684,Francia,Hombre,27,2,134603.88,1,1,1,71725.73,0
11,15767821,Bearce,528,Francia,Hombre,31,6,102016.72,2,0,0,80181.12,0
12, 15737173,Andrews,497,España,Hombre,24,3,0,2,1,0,76390.01,0
13,15632264,Kay,476,Francia,Mujer,34,10,0,2,1,0,26260.98 ,0
14,15691483,Barbilla,549,Francia,Mujer,25,5,0,2,0,0,190857.79,0
15,15600882,Scott,635,España,Mujer,35,7,0,2,1 ,1,65951.65,0
16,15643966,Goforth,616,Alemania,Hombre,45,3,143129.41,2,0,1,64327.26,0
17,15737452,Romeo,653,Alemania,Hombre,58,1,132602.88 ,1,1,0,5097.67,1
18,15788218,Henderson,549,España,Femenino,24,9,0,2,1,1,14406.41,0
19,15661507,Muldrow,587,España,Hombre,45 ,6,0,1,0,0,158684.81,0
20,15568982,Hao,726,Francia,Mujer,24,6,0,2,1,1,54724.03,0
21,15577657,McDonald,732,Francia ,Hombre,41,8,0,2,1,1,170886.17,0
22,15597945,Dellucci,636,España,Mujer,32,8,0,2,1,0,138555.46,0
Machine Translated by Google
23,15699309,Gerasimov,510,España,Mujer,38,4,0,1,1,0,118913.53,1
24,15725737,Mosman,669,Francia,Hombre,46,3,0,2,0,1
,8487.75,0 25,15625047,Yen,846,Francia,Mujer,38,5,0,1,1,1,187616.16,0
26,15738191,Maclean,577,Francia,Hombre,25,3,0,2 ,0,1,124508.29,0
27,15736816,Joven,756,Alemania,Hombre,36,2,136815.64,1,1,1,170041.95,0
28,15700772,Nebechi,571,Francia,Hombre,44,9 ,0,2,0,0,38433.35,0
29,15728693,McWilliams,574,Alemania,Mujer,43,3,141349.43,1,1,1,100187.43,0
30,15656300,Lucciano,411,Francia,Hombre ,29,0,59697.17,2,1,1,53483.21,0
31,15589475,Azikiwe,591,España,Mujer,39,3,0,3,1,0,140469.38,1
….
Los datos del mundo real (especialmente en comercio electrónico, redes sociales y anuncios en
línea) pueden contener millones de filas y miles de columnas.
Los archivos CSV son convenientes para trabajar y puede encontrar fácilmente muchos de ellos
en diferentes fuentes en línea. Está estructurado y Python también permite procesarlo fácilmente
escribiendo unas pocas líneas de código: import pandas as pd
Este paso suele ser necesario antes de que Python y su computadora puedan trabajar con los
datos. Entonces, siempre que esté trabajando en un archivo CSV y esté usando Python, es
bueno tener inmediatamente esas dos líneas de código en la parte superior de su proyecto.
Luego, establecemos los valores de entrada (X) y los valores de salida (y). A menudo, los
valores de y son nuestros resultados objetivo. Por ejemplo, el objetivo común es aprender cómo
ciertos valores de X afectan los valores de y correspondientes. Más tarde, ese aprendizaje se
puede aplicar en nuevos valores de X y ver si ese aprendizaje es útil para predecir valores de y
(desconocido al principio).
Una vez que los datos se vuelven legibles y utilizables, a menudo el siguiente paso es asegurarse
de que los valores no varíen mucho en escala y magnitud. Eso se debe a que los valores en
ciertas columnas pueden estar en una liga diferente a las demás. Por ejemplo, las edades de
los clientes pueden oscilar entre 18 y 70 años. Pero el rango de ingresos está en el rango de
100000 a 9000000. La brecha en los rangos de las dos columnas tendría un gran efecto en
nuestro modelo. Quizás el rango de ingresos contribuya en gran medida a las predicciones
resultantes en lugar de tratar por igual tanto las edades como el rango de ingresos.
Para escalar características (escalar valores en la misma magnitud), una forma de hacerlo es
usando las siguientes líneas de código: from sklearn.preprocessing import StandardScaler sc_X
= StandardScaler()
tren_X = sc_X.fit_transform(tren_X)
Machine Translated by Google
Una forma común de lograr esto es a través del siguiente código: from sklearn.model_selection import
train_test_split X_train, X_test, y_train, y_test = train_test_split(X,
y, test_size = 0.2, random_state = 0) Aquí, importamos algo de scikitlearn (biblioteca de aprendizaje
automático de software gratuito para el lenguaje de programación Python) y realice una división en el
conjunto de datos. La división suele ser 80 % conjunto de entrenamiento y 20 % conjunto de prueba
(test_size = 0,2). El estado aleatorio puede tener cualquier valor, siempre y cuando mantengas la
coherencia en las partes siguientes de tu proyecto.
En realidad, puede usar diferentes proporciones al dividir su conjunto de datos. Algunos usan una
proporción de 7030 o incluso 6040. Solo tenga en cuenta que el conjunto de entrenamiento debería
ser suficiente para que cualquier persona significativa aprenda. Es similar a obtener diferentes
experiencias de vida para que podamos obtener una representación más precisa de la realidad (por
ejemplo, el uso de varios modelos mentales popularizados por Charlie Munger, socio comercial de
Warren Buffett durante mucho tiempo).
Por eso se recomienda recopilar más datos para que el “aprendizaje” sea más preciso. Con datos
escasos, nuestro sistema podría no reconocer patrones. Nuestro algoritmo podría incluso generalizar
en exceso con datos limitados, lo que hace que el algoritmo no funcione con datos nuevos. En otras
palabras, muestra excelentes resultados cuando usamos nuestros datos existentes, pero falla
espectacularmente cuando se usan nuevos datos.
También hay casos en los que ya tenemos suficiente cantidad de datos para que se produzca un
aprendizaje significativo. A menudo, no necesitaremos recopilar más datos porque el efecto podría ser
insignificante (por ejemplo, una mejora de la precisión del 0,0000001 %) o se requerirían grandes
inversiones en tiempo, esfuerzo y dinero. En estos casos, puede ser mejor trabajar en lo que ya tenemos
que buscar algo nuevo.
Machine Translated by Google
Selección de características
Podríamos tener muchos datos. Pero, ¿son todos ellos útiles y relevantes? ¿Qué columnas y
características es probable que contribuyan al resultado?
A menudo, algunos de nuestros datos son simplemente irrelevantes para nuestro análisis. Por ejemplo,
¿el nombre de la startup afecta su éxito de financiación? ¿Existe alguna relación entre el color favorito
de una persona y su inteligencia?
Seleccionar las características más relevantes también es una tarea crucial en el procesamiento de
datos. ¿Por qué desperdiciar tiempo y recursos informáticos valiosos al incluir características/columnas
irrelevantes en nuestro análisis? Peor aún, ¿las características irrelevantes sesgarían nuestro análisis?
La respuesta es sí. Como se mencionó al principio del capítulo, basura que entra basura que sale.
Si incluimos características irrelevantes en nuestro análisis, también podemos obtener resultados
inexactos e irrelevantes. Nuestra computadora y algoritmo estarían "aprendiendo de malos ejemplos",
lo que resulta en resultados erróneos.
Para eliminar la basura y mejorar la precisión y la relevancia de nuestro análisis, a menudo se realiza
una selección de características. Como implica el término, seleccionamos las "características" que
tienen la mayor contribución y relevancia inmediata con el resultado. Esto hace que nuestro modelo
predictivo sea más simple y fácil de entender.
Por ejemplo, podríamos tener más de 20 características que describen a los clientes. Estas
características incluyen la edad, el rango de ingresos, la ubicación, el sexo, si tienen hijos o no, el nivel
de gasto, las compras recientes, el nivel educativo más alto, si tienen una casa o no, y más de una
docena de atributos más. Sin embargo, no todos estos pueden tener alguna relevancia con nuestro
análisis o modelo predictivo. Aunque es posible que todas estas funciones tengan algún efecto, el
análisis puede ser demasiado complejo para que sea útil.
Diferentes campos a menudo tienen diferentes características relevantes. Por ejemplo, analizar datos
minoristas puede ser totalmente diferente a estudiar datos de calidad del vino. En el comercio minorista
Machine Translated by Google
centrarse en las características que influyen en las compras de las personas (y en qué cantidad).
Por otro lado, el análisis de los datos de calidad del vino puede requerir el estudio de los
componentes químicos del vino y sus efectos en las preferencias de las personas.
Además, requiere cierto conocimiento del dominio para saber qué características son
interdependientes entre sí. En nuestro ejemplo anterior sobre la calidad del vino, las sustancias en
el vino pueden reaccionar entre sí y, por lo tanto, afectar las cantidades de dichas sustancias.
Cuando aumenta la cantidad de una sustancia, puede aumentar o disminuir la cantidad de otra.
También es el caso con el análisis de datos comerciales. Más clientes también significa más
ventas. Las personas de grupos de ingresos más altos también pueden tener niveles de gasto más altos.
Estas características son interdependientes y excluir algunas de ellas podría simplificar nuestro
análisis.
Seleccionar las funciones más apropiadas también puede llevar más tiempo, especialmente cuando
se trata de un conjunto de datos enorme (con cientos o incluso miles de columnas). Los
profesionales a menudo prueban diferentes combinaciones y ven cuál produce los mejores
resultados (o buscan algo que tenga más sentido).
En general, la experiencia en el dominio podría ser más importante que la habilidad de análisis de
datos en sí. Después de todo, deberíamos empezar por hacer las preguntas correctas en lugar de
centrarnos en aplicar el algoritmo más elaborado a los datos. Para resolver las preguntas correctas
(y las más importantes), usted o alguien de su equipo debe tener experiencia en el tema.
Hemos discutido cómo procesar datos y seleccionar las características más relevantes. Pero, ¿de
dónde obtenemos los datos en primer lugar? ¿Cómo aseguramos su credibilidad? Y para los
principiantes, ¿dónde obtener datos para que puedan practicar el análisis de datos?
Solo comienza con esos dos y estarás bien. Es bueno navegar a través de los conjuntos de
datos hoy mismo para obtener ideas e inspiración sobre qué hacer con los datos. Tenga en
cuenta que el análisis de datos se trata de explorar y resolver problemas, por lo que siempre
es bueno explorar para estar más cerca de las situaciones y los desafíos.
Las grandes empresas suelen generar megabytes de datos cada segundo. Estos están siendo
almacenados y/o procesados en una base de datos. Entonces, su trabajo es dar sentido a esos
flujos interminables de datos y utilizar los conocimientos derivados para mejorar la eficiencia o
la rentabilidad.
Primero, los datos que se recopilan deben ser relevantes para las operaciones del negocio.
Quizás el momento de la compra, la categoría en la que se encuentra el producto y si se ofrece
con descuento son todos relevantes. Luego, esta información debe almacenarse en la base de
datos (con copias de seguridad) para que su equipo pueda analizarla más tarde.
Los datos se pueden almacenar en diferentes formatos y tipos de archivos, como CSV, SQLite,
JSON y BigQuery. El tipo de archivo que su empresa eligió podría haber dependido de la
conveniencia y la infraestructura existente. Es importante saber cómo trabajar con estos tipos
de archivos (a menudo se mencionan en las descripciones de trabajo) para que pueda realizar
un análisis significativo.
Machine Translated by Google
8. Visualización de datos
La visualización de datos hace que sea más fácil y rápido realizar un análisis significativo de los datos.
En muchos casos es uno de los primeros pasos a la hora de realizar un análisis de datos.
Usted accede y procesa los datos y luego comienza a visualizarlos para obtener información rápida
(por ejemplo, buscando patrones obvios, valores atípicos, etc.)
Objetivo de visualización
https://trends.google.com/trends/explore?q=bitcoin
Inmediatamente notará que hay un aumento masivo temporal en el interés por 'bitcoin' pero, en
general, disminuye constantemente con el tiempo después de ese pico. Quizás durante el apogeo
haya una exageración masiva sobre el impacto tecnológico y social de bitcoin. Y luego, la exageración
se calmó naturalmente porque la gente ya estaba familiarizada con ella o simplemente es algo natural
sobre las exageraciones.
Cualquiera que sea el caso, la visualización de datos nos permitió ver rápidamente los patrones de
una manera mucho más clara. Recuerde el objetivo de la visualización de datos, que es explorar y
comunicar datos. En este ejemplo, podemos ver rápidamente el
Machine Translated by Google
Esto también es importante cuando se presenta al panel o al público. Otras personas pueden
preferir una descripción general rápida de los datos sin entrar demasiado en los detalles. No
querrás molestarlos con textos y números aburridos. Lo que tiene un mayor impacto es cómo
presentas los datos para que las personas sepan inmediatamente su importancia. Aquí es donde
puede tener lugar la visualización de datos en la que permite que las personas exploren
rápidamente los datos y comuniquen de manera efectiva lo que está tratando de decir.
Hay varias formas de visualizar los datos. Puede crear inmediatamente diagramas y gráficos con
Microsoft Excel. También puede usar D3, seaborn, Bokeh y matplotlib. En este capítulo y en los
siguientes, nos centraremos en el uso de matplotlib.
Eso suena un bocado. Pero recuerde siempre que todavía se trata de explorar y
comunicar datos. Veamos un ejemplo para aclarar esto. Primero, aquí hay un
horizontal bar
gráfico simple (https://matplotlib.org/2.0.2/examples/lines_bars_and_markers/
barh_demo.html):
Machine Translated by Google
Para crear eso, solo necesita este bloque de código: import matplotlib.pyplot as plt plt.rcdefaults()
import numpy as
np import matplotlib.pyplot
as plt
plt.rcdefaults()
higo, hacha = plt.subparcelas()
# Datos de ejemplo
people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim') y_pos =
np.arange(len(people)) performance =
3 + 10 * np.random.rand(len (personas)) error =
np.random.rand(len(personas))
plt.show() Parece complejo al principio. Pero lo que hizo fue importar lo necesario
Machine Translated by Google
bibliotecas, establezca los datos y describa cómo deben mostrarse. Escribirlo todo desde
cero puede ser difícil. La buena noticia es que podemos copiar los ejemplos de código y
modificarlos de acuerdo con nuestros propósitos y nuevos datos.
Además de los gráficos de barras horizontales, matplotlib también es útil para crear y mostrar
diagramas de dispersión, diagramas de caja y otras representaciones visuales de datos:
"""
Demostración simple de un diagrama de dispersión.
"""
importar numpy como
np importar matplotlib.pyplot como plt
N = 50
x = np.random.rand(N)
= np.random.rand(N)
y colores = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N) )**2 # 0 a 15 puntos de radio
plt.mostrar()
ax.leyenda()
ax.grid(Verdadero)
Machine Translated by Google
plt.mostrar()
Estos son solo para mostrarle la utilidad y las posibilidades de usar matplotlib.
Tenga en cuenta que puede realizar visualizaciones de datos con calidad de publicación. También
tenga en cuenta que puede modificar los códigos de ejemplo para su propósito. No hay necesidad de
Machine Translated by Google
Es muy parecido a aprender con supervisión. Hay respuestas correctas (p. ej., gatos o perros) y
el trabajo de nuestro modelo es alinearse para que, con nuevos datos, aún pueda producir
respuestas correctas (en un nivel de rendimiento aceptable porque es difícil alcanzar el 100%).
imprimir (__doc__)
Machine Translated by Google
# Los coeficientes
print('Coeficientes: \n', regr.coef_)
# El error cuadrático medio
print("Error cuadrático medio: %.2f" %
mean_squared_error(diabetes_y_test, diabetes_y_pred))
# Puntuación de varianza explicada: 1 es predicción perfecta
print('Puntuación de varianza: %.2f' % r2_score(diabetes_y_test, diabetes_y_pred))
# Plot outputs
plt.scatter(diabetes_X_test, diabetes_y_test, color='black')
plt.plot(diabetes_X_test, diabetes_y_pred, color='blue', linewidth=3)
plt.xticks(())
plt.yticks(())
Machine Translated by Google
Parece un ejemplo sencillo. Sin embargo, esa línea fue el resultado de minimizar iterativamente
la suma residual de cuadrados entre los valores verdaderos y las predicciones. En otras palabras,
el objetivo era producir la predicción correcta utilizando lo que el modelo aprendió de los ejemplos
anteriores.
Esta parece ser la esencia de la verdadera Inteligencia Artificial en la que la computadora puede
aprender sin intervención humana. Se trata de aprender de los datos en sí mismos y tratar de
encontrar la relación entre las diferentes entradas (observe que aquí no hay resultados esperados
en contraste con Regresión y Clasificación discutidos anteriormente). La atención se centra en
las entradas y trata de encontrar los patrones y las relaciones entre ellas. Tal vez haya
agrupaciones naturales o asociaciones claras entre las entradas. También es posible que no
haya una relación útil en absoluto.
Muchos científicos de datos abordan un problema de forma binaria. ¿La tarea se incluye en el
aprendizaje supervisado o no supervisado?
10. Regresión
Básicamente, el Análisis de Regresión nos permite descubrir si existe una relación entre
una variable o variables independientes y una variable dependiente (el objetivo). Por
ejemplo, en una regresión lineal simple queremos saber si existe una relación entre x e
y. Esto es muy útil en el pronóstico (por ejemplo, hacia dónde va la tendencia) y el
modelado de series de tiempo (por ejemplo, los niveles de temperatura por año y si el
calentamiento global es cierto).
Aquí trataremos con una variable independiente y una dependiente. Más adelante,
trataremos con múltiples variables y mostraremos cómo se pueden usar para predecir el
objetivo (similar a lo que hablamos sobre predecir algo en función de varias características/
atributos).
Por ahora, veamos un ejemplo de una regresión lineal simple en la que analizamos los
datos de salario (Salary_Data.csv). Aquí está el conjunto de datos (los valores separados
por comas y las columnas son años, experiencia y salario): YearsExperience,Salary
1.1,39343.00
1.3,46205.00
1.5,37731.00
2.0,43525.00
2.2,39891.00
2.9,56642.00
3.0,60150.0 0
3.2,54445.00
3.2,64445.00
3.7,57189.00
3.9,63218.00
4.0,55794.00
4.0,56957.00
4.1,57081.00
4.5,61111.00
4.9,67938.00
Machine Translated by Google
5.1,66029.00
5.3,83088.00
5.9,81363.00
6.0,93940.00
6.8,91738.00
7.1,98273.00
7.9,101302.00
8.2,113812.00
8.7,109431.00 9
0,105582,00
9,5,116969,00
9,6,112635,00
10,3,122391,00
10,5,121872,00
Aquí está el código de Python para ajustar la regresión lineal simple al conjunto de entrenamiento: #
Importación de las bibliotecas
import matplotlib.pyplot as plt import pandas
as pd
Después de crear la línea, aplicamos esa misma línea al conjunto de prueba (el 30 %
restante o 1/3 del conjunto de datos).
Machine Translated by Google
Observe que la línea funcionó bien tanto en el conjunto de entrenamiento como en el conjunto de prueba.
Como resultado, existe una buena posibilidad de que la línea o nuestro modelo también funcionen bien
con nuevos datos.
Hagamos un resumen de lo que pasó. Primero, importamos las bibliotecas necesarias (pandas para
procesar datos, matplotlib para visualización de datos). A continuación, importamos el conjunto de datos
y asignamos X (la variable independiente) a Años de experiencia e y (el objetivo) a Salario. Luego
dividimos el conjunto de datos en Conjunto de entrenamiento (⅔) y Conjunto de prueba (⅓).
Luego, aplicamos el modelo de regresión lineal y ajustamos una línea (con la ayuda de scikitlearn, que
es una biblioteca de aprendizaje automático de software gratuito para el lenguaje de programación
Python). Esto se logra a través de las siguientes líneas de código: from sklearn.linear_model import
LinearRegression regressor = LinearRegression() regressor.fit(X_train, y_train)
Después de aprender del conjunto de
entrenamiento (X_train y y_train), luego aplicamos ese regresor al conjunto de prueba (X_test) y compare
los resultados usando visualización de datos (matplotlib).
Es un enfoque sencillo. Nuestro modelo aprende del conjunto de entrenamiento y luego lo aplica al
conjunto de prueba (y ve si el modelo es lo suficientemente bueno). Este es el principio esencial de la
regresión lineal simple.
Eso también se aplica de manera similar a la regresión lineal múltiple. El objetivo sigue siendo ajustar una
recta que muestre mejor la relación entre una variable independiente y la
Machine Translated by Google
objetivo. La diferencia es que en la Regresión Lineal Múltiple, tenemos que tratar con al
menos 2 características o variables independientes.
63408.86,129219.61,46085.25,California,97427.84
55493.95,103057.49,214634.81,Florida,96778.92
46426.07,157693.92,210797.67,California,9671 2.8
46014.02,85047.44,205517.64,Nueva York,96479.51
28663.76,127056.21,201126.82,Florida,90708.19
44069.95,51283.14, 197029.42,California,89949.14
20229.59,65947.93,185265.1,Nueva York,81229.06
38558.51,82982.09,174999.3,California,81005.76
28754.33,118546.0 5,172795.67,California,78239.91
27892.92,84710.77,164470.71,Florida,77798.83
23640.93,96189.63,148001.11,California, 71498.49
15505.73,127382.3,35534.17,Nueva York,69758.98
22177.74,154806.14,28334.72,California,65200.33
1000.23,124153.04,1903.93,Nueva York,64 926.08
1315.46,115816.21,297114.46,Florida,49490.75
0,135426.92,0,California,42559.73 542.05,
51743.15,0,Nueva York,35673.41
0,116983.8,45173.06,California,14681.4
Tenga en cuenta que hay múltiples características o variables independientes (gasto en I+D,
administración, gasto en marketing, estado). Nuevamente, el objetivo aquí es revelar o descubrir
una relación entre las variables independientes y el objetivo (beneficio).
También observe que debajo de la columna 'Estado', los datos están en texto (no en números).
Verá Nueva York, California y Florida en lugar de números. ¿Cómo lidias con este tipo de
datos?
Una forma conveniente de hacerlo es transformando datos categóricos (Nueva York, California,
Florida) en datos numéricos. Podemos lograr esto si usamos las siguientes líneas de código:
from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder = LabelEncoder()
trabajar en. Para ello, crearemos “variables ficticias” que toman los valores 0 o 1. En otras
palabras, indican la presencia o ausencia de algo.
Por ejemplo, tenemos los siguientes datos con variables categóricas: 3.5, Nueva York 2.0,
California 6.7, Florida Si usamos variables ficticias, los datos anteriores se transformarán en
esto: 3.5, 1, 0, 0
2.0, 0, 1, 0
6.7, 0, 0, 1
3.5 1 0 0
2.0 0 1 0
6.7 0 0 1
Sin embargo, existe esta llamada "trampa de variable ficticia" en la que hay una variable
adicional que podría haberse eliminado porque se puede predecir a partir de las demás. En
nuestro ejemplo anterior, observe que cuando las columnas de Nueva York y California son
cero (0), automáticamente sabrá que es Florida. Ya puedes saber de qué Estado se trata
incluso con solo las 2 variables.
Después de esos pasos de preprocesamiento de datos, los datos de alguna manera se verían así:
Observe que no hay variables categóricas (Nueva York, California, Florida) y hemos eliminado la
"variable redundante" para evitar la trampa de la variable ficticia.
Machine Translated by Google
Ahora estamos listos para dividir el conjunto de datos en Conjunto de entrenamiento y Conjunto
de prueba. Podemos hacer esto con las siguientes líneas de código: from sklearn.model_selection
import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0) 80%
Conjunto de entrenamiento, 20% Conjunto de prueba. El siguiente paso es que podemos crear
un regresor y "ajustar la línea" (y usar esa línea en el conjunto de prueba): from sklearn.linear_model
import LinearRegression regresor = LinearRegression()
regresor.fit(X_train, y_train)
Sin embargo, ¿eso es todo lo que hay? ¿Son todas las variables (gasto en I+D, administración,
gasto en marketing, estado) responsables del objetivo (beneficio). Muchos analistas de datos
realizan pasos adicionales para crear mejores modelos y predictores. Podrían estar haciendo
Eliminación hacia atrás (por ejemplo, eliminando variables una por una hasta que queden una o
dos) para que sepamos cuál de las variables está haciendo la mayor contribución a nuestros
resultados (y por lo tanto predicciones más precisas).
Hay otras formas de hacer que el modelo produzca predicciones más precisas. Depende de sus
objetivos (quizás quiera usar todas las variables de datos) y recursos (no solo dinero y poder de
cómputo, sino también limitaciones de tiempo).
Árbol de decisión
El método de regresión discutido hasta ahora es muy bueno si existe una relación lineal entre las
variables independientes y el objetivo. Pero, ¿qué pasa si no hay linealidad (pero las variables
dependientes aún se pueden usar para predecir el objetivo)?
Aquí es donde entran en juego otros métodos, como la regresión del árbol de decisión. Tenga en
cuenta que suena diferente de la regresión lineal simple y la regresión lineal múltiple. No hay
linealidad y funciona de manera diferente. La regresión del árbol de decisión funciona desglosando
el conjunto de datos en subconjuntos cada vez más pequeños. eso Aquí está:
un ilustración mejor explica
Machine Translated by Google
http://chemeng.utoronto.ca/~datamining/dmc/decision_tree_reg.htm
En lugar de trazar y ajustar una línea, hay nodos de decisión y nodos hoja.
Veamos rápidamente un ejemplo para ver cómo funciona (usando
Position_Salaries.csv): El conjunto de datos: Posición, Nivel,
Salario Business Analyst,
1,45000 Junior Consultant,
2,50000 Senior Consultant,
3,60000 Manager,
4,80000 Country Gerente,
5,110000 Gerente Regional,
6,150000 Socio,
7,200000 Socio Principal,
8,300000 Nivel
C, 9,500000 Director Ejecutivo, 10,1000000
# Regresión del árbol de decisión
# Predicción de un nuevo
resultado y_pred = regresor.predict(6.5)
# Visualización de los resultados de la regresión del árbol de decisión (resolución más alta)
X_grid = np.arange(min(X), max(X), 0.01)
X_grid = X_grid.reshape((len(X_grid), 1)) plt.scatter(X,
y, color = 'red') plt.plot(X_grid,
regressor.predict(X_grid), color = 'blue') plt. title('Truth or Bluff (Decision
Tree Regression)') plt.xlabel('Position level') plt.ylabel('Salary')
plt.show() Cuando ejecute el
código anterior, debería
ver lo siguiente en el Jupyter Computadora portátil:
Tenga en cuenta que no existe una relación lineal entre el nivel de posición y el salario. En
cambio, es algo un resultado paso a paso. Todavía podemos ver la relación entre el nivel del
puesto y el salario, pero se expresa en términos diferentes (enfoque aparentemente no sencillo).
Bosque aleatorio
Como se discutió anteriormente, la regresión del árbol de decisión puede ser útil cuando no hay
mucha linealidad entre una variable independiente y un objetivo. Sin embargo, este enfoque
utiliza el conjunto de datos una vez para obtener resultados. Esto se debe a que, en muchos
casos, siempre es bueno obtener diferentes resultados de diferentes enfoques (por ejemplo,
muchos árboles de decisión) y luego promediar esos resultados.
Para resolver esto, muchos científicos de datos usan Random Forest Regression. Esto es
simplemente una colección o conjunto de diferentes árboles de decisión en los que se utilizan
diferentes subconjuntos aleatorios y luego se promedian los resultados. Es como crear árboles de decisión.
Machine Translated by Google
# Escalado de funciones
"""de sklearn.preprocessing import StandardScaler sc_X = StandardScaler()
tren_X = sc_X.fit_transform(tren_X)
X_test = sc_X.transform(X_test) sc_y =
StandardScaler() y_train =
sc_y.fit_transform(y_train)"""
# Predicción de un nuevo
resultado y_pred = regresor.predict(6.5)
plt.mostrar()
Tenga en cuenta que es muy similar a la regresión del árbol de decisión anterior. Después
de todo, Random Forest (del término en sí) es una colección de "árboles". Si no hay mucha
desviación en nuestro conjunto de datos, el resultado debería verse casi igual. Vamos a
ellos para la visualización: compararfácil
Machine Translated by Google
Muchos científicos de datos prefieren Random Forest porque promedia los resultados
que pueden reducir los errores de manera efectiva. Mirando el código parece directo y
simple. Pero detrás de escena hay algoritmos complejos en juego. Es una especie de
caja negra en la que hay una entrada, hay una caja negra y está el resultado. No tenemos
mucha idea de lo que sucede dentro de la caja negra (aunque aún podemos averiguarlo
si profundizamos en las matemáticas). Nos encontraremos con esto una y otra vez a
medida que discutamos más sobre el análisis de datos y el aprendizaje automático.
Machine Translated by Google
11. Clasificación
¿Spam o no spam? Este es uno de los usos y ejemplos más populares de Clasificación. Al
igual que la regresión, la clasificación también se encuentra bajo el aprendizaje supervisado.
Nuestro modelo aprende de los datos etiquetados ("con supervisión"). Luego, nuestro sistema
aplica ese aprendizaje a un nuevo conjunto de datos.
Por ejemplo, tenemos un conjunto de datos con diferentes mensajes de correo electrónico y cada
uno fue etiquetado como Spam o No Spam. Nuestro modelo podría entonces encontrar patrones o
puntos en común entre los mensajes de correo electrónico marcados como Spam. Al realizar una
predicción, nuestro modelo podría intentar encontrar esos patrones y puntos en común en los nuevos
mensajes de correo electrónico.
Hay diferentes enfoques para hacer una clasificación exitosa. Analicemos algunos de ellos:
Regresión logística
Aquí nuestras dos variables son Edad y Salario Estimado. Luego, cada punto de datos se
clasifica como 0 (no comprado) o 1 (comprado). Hay una línea que separa los dos (con
leyendas de colores para facilitar la visualización). Este enfoque (Logística
Machine Translated by Google
Al igual que con Regresión en el capítulo anterior en el que existe esta llamada caja negra, el detrás
de escena de Regresión logística para clasificación puede parecer complejo. La buena noticia es
que su implementación es sencilla, especialmente cuando usamos Python y scikitlearn: aquí hay un
vistazo del conjunto de datos primero
('Social_Network_Ads.csv'):
# Regresión logística
# Escalado de
características de sklearn.preprocessing import StandardScaler sc
= StandardScaler()
tren_X = sc.fit_transform(tren_X)
X_test = sc.transform(X_test)
Machine Translated by Google
Es un paso común aprender primero del conjunto de entrenamiento y luego aplicar ese aprendizaje
al conjunto de prueba (y ver si el modelo es lo suficientemente bueno para predecir el resultado
de nuevos puntos de datos). Después de todo, esta es la esencia del aprendizaje supervisado.
En primer lugar, está la formación y la supervisión. A continuación, la lección se aplicará a nuevas
situaciones.
Como observa en la visualización del conjunto de prueba, la mayoría de los puntos verdes se
encuentran en la región verde (aunque con algunos puntos rojos porque es difícil lograr una
precisión del 100 % en la regresión logística). Esto significa que nuestro modelo podría ser lo
suficientemente bueno para predecir si una persona con cierta edad y salario estimado compraría
o no.
También preste especial atención a los siguientes bloques de código: # Feature Scaling
from sklearn.preprocessing import StandardScaler sc =
StandardScaler()
Machine Translated by Google
tren_X = sc.fit_transform(tren_X)
X_test = sc.transform(X_test) Primero transformamos los datos en el mismo rango o escala
para evitar sesgos o una gran dependencia de una determinada variable. En nuestro conjunto
de datos, el salario estimado se expresa en miles, mientras que la edad se expresa en una
escala más pequeña. Tenemos que hacerlos en el mismo rango para que podamos obtener
un modelo más razonable.
Bueno, aparte de la regresión logística, hay otras formas de realizar tareas de clasificación.
Vamos a discutirlos a continuación.
Observe que la regresión logística parece tener un límite lineal entre 0 y 1. Como resultado,
pierde algunos de los puntos de datos que deberían haber estado en el otro lado.
Afortunadamente, existen modelos no lineales que pueden capturar más puntos de datos de
una manera más precisa. Uno de ellos es mediante el uso de KNearest Neighbors.
Funciona al tener un "nuevo punto de datos" y luego contar cuántos vecinos pertenecen a
cada categoría. Si más vecinos pertenecen a la categoría A que a la categoría B, entonces el
nuevo punto debería pertenecer a la categoría A.
# Escalado de
características de sklearn.preprocessing import StandardScaler sc
= StandardScaler()
tren_X = sc.fit_transform(tren_X)
X_test = sc.transform(X_test)
visualizaciones:
Observe que el límite no es lineal. Este es el caso debido al enfoque diferente de KNearest
Neighbors (KNN). Observe también que todavía hay fallas (por ejemplo, algunos puntos
rojos todavía están en la región verde). Capturarlos a todos puede requerir el uso de un
conjunto de datos más grande u otro método (o tal vez no haya forma de capturarlos todos
porque nuestros datos y modelo nunca serán perfectos).
Al igual que con la regresión, muchos científicos de datos también implementan árboles de
decisión en la clasificación. Como se mencionó en el capítulo anterior, crear un árbol de
decisión consiste en dividir un conjunto de datos en subconjuntos cada vez más pequeños
mientras se ramifican (creando un árbol de decisión asociado).
Observe que las ramas y las hojas son el resultado de dividir el conjunto de datos en subconjuntos
más pequeños. En Clasificación, podemos aplicar esto de manera similar a través del siguiente
código (nuevamente usando Social_Network_Ads.csv): # Clasificación del árbol de decisión
# Escalado de
características de sklearn.preprocessing import StandardScaler sc
= StandardScaler()
tren_X = sc.fit_transform(tren_X)
X_test = sc.transform(X_test)
Machine Translated by Google
X2.ravel()]).T).reshape(X1.shape), clasificador.predecir(np.array([X1.ravel(),
alpha = 0.75, cmap = ListedColormap(('rojo',
'verde'))) plt.xlim(X1.min(), X1.max()) plt.ylim(X2.min(), X2.max()) para
i, j en enumerar(np.unique(y_set)):
plt.scatter (X_set[y_set == j, 0],
X_set[y_set == j, 1], c = ListedColormap(('rojo',
'verde'))(i), label = j) plt.title('Árbol de decisión Clasificación
(Conjunto de entrenamiento)') plt.xlabel('Edad') plt.ylabel('Salario
estimado') plt.legend() plt.show()
Observe la gran diferencia en comparación con la regresión logística y los vecinos más
cercanos (KNN). En estos dos últimos, solo hay dos límites. Pero aquí, en nuestra clasificación
del árbol de decisión, hay puntos fuera de la región roja principal que caen dentro de las "mini
regiones rojas". Como resultado, nuestro modelo pudo capturar puntos de datos que de otro
modo serían imposibles (por ejemplo, cuando se usa la regresión logística).
Recuerde del capítulo anterior sobre Regresión que un Random Forest es una colección o
conjunto de muchos árboles de decisión. Esto también se aplica a la clasificación en la que se
utilizan muchos árboles de decisión y se promedian los resultados.
# Clasificación aleatoria de bosques
# Escalado de
características de sklearn.preprocessing import StandardScaler
Machine Translated by Google
sc = escalador estándar()
tren_X = sc.fit_transform(tren_X)
X_test = sc.transform(X_test)
plt.ylabel('Salario estimado')
plt.legend()
plt.show() Cuando ejecutemos el código, veremos lo siguiente:
12. Agrupación
Pero en este capítulo será diferente. Esto se debe a que comenzaremos con el aprendizaje no
supervisado en el que no se dieron respuestas correctas ni etiquetas. En otras palabras, solo hay
datos de entrada pero no hay salida. No hay supervisión cuando se aprende de los datos.
Esta es una forma de aprendizaje no supervisado donde no hay etiquetas o, en muchos casos, no hay
respuestas realmente correctas. Eso es porque no había respuestas correctas en primer lugar. Solo
tenemos un conjunto de datos y nuestro objetivo es ver las agrupaciones que se han formado
orgánicamente.
No estamos tratando de predecir un resultado aquí. El objetivo es buscar estructuras en los datos. En
otras palabras, estamos "dividiendo" el conjunto de datos en grupos en los que los miembros tienen
algunas similitudes o proximidades. Por ejemplo, cada cliente de comercio electrónico puede pertenecer
a un grupo en particular (por ejemplo, dado su nivel de ingresos y gastos). Si hemos recopilado
suficientes puntos de datos, es probable que haya agregados.
Al principio, los puntos de datos parecerán dispersos (sin ningún patrón). Pero una vez que aplicamos
un algoritmo de agrupamiento, los datos de alguna manera tendrán sentido porque podremos visualizar
fácilmente los grupos o conglomerados. Además de descubrir las agrupaciones naturales, los
algoritmos de agrupamiento también pueden revelar valores atípicos para la detección de anomalías
(también hablaremos de esto más adelante).
otras áreas científicas y empresariales. Sin embargo, no hay reglas escritas en piedra cuando se
trata de determinar la cantidad de clústeres y qué punto de datos debe pertenecer a un
determinado clúster. Depende de nuestro objetivo (o si los resultados son lo suficientemente
útiles). Aquí es también donde entra en juego nuestra experiencia en un dominio particular.
Al igual que con otros algoritmos y herramientas de análisis de datos y aprendizaje automático,
todavía se trata de nuestro conocimiento del dominio. De esta manera podemos ver y analizar
los datos en el contexto adecuado. Incluso con las herramientas y técnicas más avanzadas, el
contexto y el objetivo siguen siendo cruciales para dar sentido a los datos.
Agrupación de KMeans
Una forma de dar sentido a los datos a través de la agrupación es mediante KMeans. Es uno de
los algoritmos de agrupamiento más populares debido a su simplicidad. Funciona mediante la
partición de objetos en k clústeres (número de clústeres que especificamos) en función de la
similitud de características.
Tenga en cuenta que el número de grupos es arbitrario. Podemos ponerlo en cualquier número
que queramos. Sin embargo, es bueno hacer que el número de clústeres sea suficiente para que
nuestro trabajo sea significativo y útil. Analicemos un ejemplo para ilustrar esto.
Aquí tenemos datos sobre los clientes del centro comercial ('Mall_Customers.csv') donde se
indica información sobre su sexo, edad, ingresos anuales y puntuación de gastos. Cuanto mayor
sea el puntaje de gasto (de 100), más gastarán en el centro comercial.
En este ejemplo, estamos más interesados en agrupar a los Clientes de acuerdo con su
Puntuación anual de ingresos y gastos.
X = dataset.iloc[:, [3, 4]].values Nuestro objetivo aquí es revelar los clústeres y ayudar al departamento de
marketing a formular sus estrategias. Por ejemplo, podríamos subdividir a los Clientes en 5 grupos distintos:
Aunque el número de conglomerados suele ser arbitrario, hay formas de encontrar ese
número óptimo. Una de estas formas es a través del método Elbow y WCSS (sumas de
cuadrados dentro de un grupo). Aquí está el código para lograr esto: from sklearn.cluster
import KMeans wcss = [] for i in
range(1,
11): kmeans =
KMeans(n_clusters = i, init = 'kmeans++', random_state = 42) kmeans.fit (X)
Machine Translated by Google
wcss.append(kmeans.inertia_)
plt.plot(rango(1, 11), wcss)
plt.title('El método del codo')
plt.xlabel('Número de grupos')
plt.ylabel('WCSS')
plt.mostrar()
plt.mostrar()
Ahí lo tenemos. Tenemos 5 grupos y el Grupo n.° 2 (puntos azules, ingreso anual alto y puntaje de
gasto bajo) es lo suficientemente significativo. Podría valer la pena que el departamento de marketing
se centre en ese grupo.
Observe también los centroides (los puntos amarillos). Esta es una parte de cómo funciona el
agrupamiento de KMeans. Es un enfoque iterativo donde los puntos aleatorios se colocan
inicialmente hasta que convergen a un mínimo (por ejemplo, se minimiza la suma de las distancias).
Como se mencionó anteriormente, todo puede ser arbitrario y puede depender en gran medida de
nuestro juicio y posible aplicación. Podemos establecer n_clusters en cualquier cosa que no sea 5.
Solo usamos el método Elbow para que podamos tener una base más sólida y consistente para la
cantidad de grupos. Pero aún depende de nuestro juicio qué debemos usar y si los resultados son
lo suficientemente buenos para nuestra aplicación.
Detección de anomalías
Aparte de revelar los grupos naturales, también es un caso común ver si hay puntos obvios que no
pertenecen a esos grupos. Este es el corazón de la detección de anomalías o valores atípicos en
los datos.
Esta es una tarea crucial porque cualquier gran desviación de lo normal puede causar una catástrofe.
¿Es fraudulenta una transacción con tarjeta de crédito? ¿Es sospechosa una actividad de inicio de
sesión (es posible que esté iniciando sesión desde una ubicación o dispositivo totalmente diferente)?
¿Se mantienen constantemente los niveles de temperatura y presión en un tanque (cualquier valor
atípico podría causar explosiones y detener las operaciones)? ¿Es un determinado punto de datos
causado por una entrada o medición incorrecta (por ejemplo, quizás se usaron pulgadas en lugar de
Machine Translated by Google
centímetros)?
Con una visualización de datos sencilla, podemos ver inmediatamente los valores atípicos.
Luego podemos evaluar si estos valores atípicos presentan una amenaza importante. También
podemos ver y evaluar esos valores atípicos al referirnos a la media y la desviación estándar.
Si un punto de datos se desvía por una desviación estándar de la media, podría ser una anomalía.
Aquí también es donde entra en juego nuestra experiencia en el campo. Si hay una anomalía,
¿qué tan serias son las consecuencias? Por ejemplo, puede haber miles de transacciones de
compra en una tienda en línea todos los días. Si somos demasiado estrictos con nuestra
detección de anomalías, muchas de esas transacciones serán rechazadas (lo que resulta en
pérdida de ventas y ganancias). Por otro lado, si permitimos mucha libertad en nuestra detección
de anomalías, nuestro sistema aprobaría más transacciones.
Sin embargo, esto podría generar quejas más adelante y posiblemente la pérdida de clientes a
largo plazo.
Tenga en cuenta aquí que no se trata solo de algoritmos, especialmente cuando se trata de
casos comerciales. Cada campo puede requerir un nivel de sensibilidad diferente. Siempre hay
una compensación y cualquiera de las opciones podría ser costosa. Es cuestión de probar y
saber si nuestro sistema de detección de anomalías es suficiente para nuestra aplicación.
Machine Translated by Google
Esta también puede ser una buena manera de recomendar productos relacionados a los clientes.
Por ejemplo, muchos clientes pueden comprar pañales en línea y luego comprar libros sobre la
crianza de los hijos. Estos dos productos tienen fuertes asociaciones porque marcan la transición de
la vida del cliente (tener un bebé). Además, si notamos un aumento en la demanda de pañales,
también podríamos prepararnos con libros para padres.
Esta es una buena manera de pronosticar y prepararse de alguna manera para las demandas futuras
comprando suministros por adelantado.
Explicación
Entonces, ¿cómo determinamos el "nivel de relación" de los elementos entre sí y creamos grupos
útiles a partir de él? Un enfoque directo consiste en contar las transacciones que involucran un
conjunto particular. Por ejemplo, tenemos las siguientes transacciones:
Transacción compras
Nuestro conjunto objetivo es {Huevo, jamón}. Observe que esta combinación de compras ocurrió en 2
transacciones (Transacciones 1 y 2). En otras palabras, esta combinación ocurrió el 50% de las veces.
Es un ejemplo simple, pero si estamos estudiando 10 000 transacciones y el 50 % sigue siendo el caso,
por supuesto que existe una fuerte asociación entre el huevo y el jamón.
Entonces podríamos darnos cuenta de que vale la pena juntar huevos y jamones (u ofrecerlos en un
paquete) para facilitar la vida de nuestros clientes (mientras también hacemos más ventas). Cuanto
mayor sea el porcentaje de nuestro objetivo establecido en el total de transacciones, mejor. O bien, si el
porcentaje aún cae por debajo de nuestro umbral arbitrario (por ejemplo, 30 %, 20 %), aún podríamos
prestar atención a un conjunto en particular y hacer ajustes a nuestros productos y ofertas.
Además de calcular el porcentaje real, otra forma de saber qué tan "popular" es un conjunto de elementos
es trabajar con probabilidades. Por ejemplo, ¿cuál es la probabilidad de que el producto X aparezca con
el producto Y? Si hay una alta probabilidad, de alguna manera podemos decir que los dos productos
están estrechamente relacionados.
Esas son formas de estimar la "relación" o el nivel de asociación entre dos productos. Uno o una
combinación de enfoques podría ser suficiente para ciertas aplicaciones. Quizá trabajar con probabilidades
produzca mejores resultados. O bien, priorizar un conjunto de elementos muy popular (alto porcentaje de
ocurrencia) da como resultado más transacciones.
Al final, podría tratarse de probar diferentes enfoques (y combinaciones de productos) y luego ver cuál
produce los resultados óptimos. Incluso podría darse el caso de que una combinación de dos productos
con una relación muy baja permita que se realicen más compras.
A priori
Cualquiera que sea el caso, exploremos cómo se aplica todo al mundo real. Llamemos al problema
"Optimización de la canasta de mercado". Nuestro objetivo aquí es generar una lista de
Machine Translated by Google
Podemos usar Apyori, que es una implementación simple del algoritmo Apriori. encuentra
poder aquí referencia: Tú lo https://pypi.org/project/apyori/#description
para su
Está preconstruido para nosotros y casi listo para nuestro propio uso. Es similar a cómo
usamos scikitlearn, pandas y numpy. En lugar de empezar de cero, ya
Machine Translated by Google
tenemos bloques de código que simplemente podemos implementar. Tenga en cuenta que
codificar todo desde cero requiere mucho tiempo y es un desafío técnico.
Para implementar Apyori, podemos importarlo de manera similar a como importamos otras
bibliotecas: from apyori import apriori A continuación, configuramos las reglas (los niveles de
relación mínima) para que de alguna manera podamos generar una lista útil de elementos relacionados.
Esto se debe a que casi dos elementos cualesquiera pueden tener algún nivel de relación. El
objetivo aquí es incluir solo la lista que podría sernos útil.
lista_resultados.append('REGLA:\t'
+ str(resultados[i ][0]) + '\nSUPPORT:\t' + str(results[i][1])) print (results_list) Cuando ejecute
todo el código en
Jupyter Notebook, verá algo como esto:
Es desordenado y casi incomprensible. Pero si lo ejecuta en Spyder (otro paquete útil de ciencia
de datos incluido en la instalación de Anaconda), el resultado será
Machine Translated by Google
Fíjate que hay diferentes conjuntos de elementos con su correspondiente “Soporte”. Cuanto mayor
sea el Soporte, de alguna manera podemos decir que mayor será la relación. Por ejemplo, la
crema ligera y el pollo a menudo van juntos porque las personas podrían estar usando los dos
para cocinar algo. Otro ejemplo está en el itemset con un índice de 5 (salsa de tomate y carne
molida). Es posible que estos dos artículos siempre vayan juntos en la bolsa de la compra porque
también se usan para preparar una comida o una receta.
Esta es solo una introducción al aprendizaje de reglas de asociación. El objetivo aquí era explorar
las posibles aplicaciones en escenarios del mundo real, como la optimización de la cesta de la
compra. Hay otras formas más sofisticadas de hacer esto. Pero, en general, se trata de determinar
el nivel de relación entre los elementos y luego evaluar si es útil o lo suficientemente bueno.
Machine Translated by Google
Tenga en cuenta que en los capítulos anteriores, la atención se centra en trabajar con información
pasada y luego extraer conocimientos de ella. En otras palabras, estamos mucho más centrados en el
pasado que en el presente y el futuro.
Pero para que la ciencia de datos y el aprendizaje automático sean verdaderamente útiles, los
algoritmos y sistemas deberían funcionar en situaciones en tiempo real. Por ejemplo, necesitamos
sistemas que aprendan en tiempo real y se ajusten en consecuencia para maximizar las recompensas.
Aquí es donde entra en juego el aprendizaje por refuerzo (RL). En pocas palabras, RL se trata de
reforzar los comportamientos correctos o deseados a medida que pasa el tiempo. Una recompensa
por cada comportamiento correcto y un castigo en caso contrario.
Un ejemplo simple es la optimización de las tasas de clics (CTR) de los anuncios en línea. Tal vez
tenga 10 anuncios que esencialmente digan lo mismo (tal vez las palabras y los diseños sean
ligeramente diferentes entre sí). Al principio, desea saber qué anuncio funciona mejor y produce el
CTR más alto. Después de todo, más clics podrían significar más prospectos y clientes para su negocio.
Pero si desea maximizar el CTR, ¿por qué no realizar los ajustes a medida que se ejecutan los
anuncios? En otras palabras, no espere a que se agote todo su presupuesto publicitario para saber
cuál funcionó mejor. En su lugar, averigüe qué anuncios funcionan mejor mientras se ejecutan. Realice
ajustes desde el principio para que luego solo se muestren a los prospectos los anuncios de mayor
rendimiento.
Es muy similar a un famoso problema en la teoría de la probabilidad sobre el problema del bandido
con múltiples brazos. Supongamos que tiene un recurso limitado (por ejemplo, un presupuesto
publicitario) y algunas opciones (10 variantes de anuncios). ¿Cómo asignará su recurso entre esas
opciones para que pueda maximizar su ganancia (por ejemplo, CTR óptimo)?
Primero, tienes que “explorar” y probar los anuncios uno por uno. Por supuesto, si observa que el
Anuncio 1 funciona excepcionalmente bien, lo "explotará" y lo publicará durante el resto de la campaña.
No necesita gastar su dinero en rendimiento inferior
Machine Translated by Google
Sin embargo, hay una trampa. Al principio, el anuncio 1 podría estar funcionando bien, por lo que
estamos tentados a usarlo una y otra vez. Pero, ¿qué pasa si el Anuncio 2 se pone al día y
dejamos que las cosas se desarrollen? ¿El Anuncio 2 producirá mayores ganancias? Nunca lo
sabremos porque el rendimiento del Anuncio 1 ya fue explotado.
Hay un límite fino entre los 3 porque todos ellos todavía están preocupados por la optimización de
una forma u otra. Cualquiera que sea el caso, los 3 tienen aplicaciones útiles tanto en entornos
científicos como comerciales.
Este también es el caso de maximizar el CTR de los anuncios en línea. Tenemos un presupuesto
publicitario limitado y queremos sacarle el máximo partido. Exploremos un ejemplo (usando el
Machine Translated by Google
Una forma popular de lograr esto es por Thompson Sampling. Simplemente, aborda
el dilema de exploraciónexplotación (tratar de lograr un equilibrio) muestreando o
probando las acciones prometedoras e ignorando o descartando las acciones que
probablemente tendrán un rendimiento inferior. El algoritmo funciona con probabilidades
y esto se puede expresar en código a través de lo siguiente:
import
random
N = 10000 d = 10
ads_selected = [] number_of_rewards_1
= [0] * d number_of_rewards_0 = [0]
* d total_reward =
0 for n in range( 0, N):
anuncio = 0 max_random = 0
Machine Translated by Google
números_de_recompensas_1[anuncio] = números_de_recompensas_1[anuncio]
+1
más: números_de_recompensas_0[anuncio] =
números_de_recompensas_0[anuncio] + 1 recompensa_total = recompensa_total + recompensa
Cuando ejecutamos y visualizamos
el código : plt.hist(anuncios_seleccionados)
plt.title('Histograma
de selecciones de anuncios') plt.xlabel('Anuncios') plt.ylabel('Número de veces que se seleccionó cada anunci
plt.mostrar()
Tenga en cuenta que la implementación del muestreo de Thompson puede ser muy compleja.
Es un algoritmo interesante que es muy popular en la optimización de anuncios en línea,
recomendación de artículos de noticias, surtido de productos y otras aplicaciones comerciales.
Hay otros algoritmos y heurísticas interesantes como Upper Confidence Bound. El objetivo es
ganar mientras se aprende. En lugar de un análisis posterior, nuestro algoritmo puede realizar
y ajustar en tiempo real. Esperamos maximizar la recompensa tratando de equilibrar la
compensación entre exploración y explotación (maximizar el rendimiento inmediato o "aprender
más" para mejorar el futuro).
Machine Translated by Google
Para nosotros los humanos es muy fácil para nosotros reconocer objetos y dígitos. También es
fácil para nosotros conocer el significado de una oración o fragmento de texto. Sin embargo, es
un caso completamente diferente con las computadoras. Lo que es automático y trivial para
nosotros podría ser una tarea enorme para las computadoras y los algoritmos.
Por el contrario, las computadoras pueden realizar cálculos matemáticos largos y complejos,
mientras que los humanos somos terribles en eso. Es interesante que las capacidades de los
humanos y las computadoras sean opuestas o complementarias.
Pero el siguiente paso natural es imitar o incluso superar las capacidades humanas. Es como si
el objetivo fuera reemplazar a los humanos en lo que mejor saben hacer. En un futuro cercano,
es posible que no podamos notar la diferencia si con quién estamos hablando es humano o no.
Para lograr esto, una de las formas más populares y prometedoras es mediante el uso de redes
neuronales artificiales. Estos están vagamente inspirados en cómo funcionan nuestras neuronas
y cerebros. El modelo predominante sobre cómo funciona nuestro cerebro es que las neuronas
reciben, procesan y envían señales (pueden conectarse con otras neuronas, recibir información
de los sentidos o dar una salida). Aunque no es una comprensión 100% precisa sobre el cerebro
y las neuronas, este modelo es lo suficientemente útil para muchas aplicaciones.
Este es el caso de las redes neuronales artificiales en las que hay neuronas (colocadas en una o
pocas capas por lo general) que reciben y envían señales. Aquí hay una ilustración básica de
Playground: de TensorFlow
Machine Translated by Google
Observe que comenzó con las funciones (las entradas) y luego se conectan con 2 "capas
ocultas" de neuronas. Finalmente, hay una salida en la que los datos ya se procesaron de forma
iterativa para crear un modelo útil o una generalización.
En muchos casos, la forma en que se utilizan las redes neuronales artificiales (ANN) es muy
similar a cómo funciona el aprendizaje supervisado. En ANN, a menudo tomamos una gran
cantidad de ejemplos de capacitación y luego desarrollamos un sistema que permite aprender
de dichos ejemplos. Durante el aprendizaje, nuestra ANN infiere automáticamente reglas para
reconocer una imagen, texto, audio o cualquier otro tipo de datos.
Como ya se habrá dado cuenta, la precisión del reconocimiento depende en gran medida de la
calidad y cantidad de nuestros datos. Después de todo, es basura que entra basura que sale.
Las redes neuronales artificiales aprenden de lo que se alimenta. Todavía podríamos mejorar la
precisión y el rendimiento a través de otros medios además de mejorar la calidad y la cantidad
de datos (como la selección de características, el cambio de la tasa de aprendizaje y la
regularización).
Potencial y Restricciones
La idea detrás de las redes neuronales artificiales es en realidad antigua. Pero recientemente
ha experimentado un resurgimiento masivo que muchas personas (lo entiendan o no) hablan de
ello.
¿Por qué volvió a ser popular? Es debido a la disponibilidad de datos y los desarrollos
tecnológicos (especialmente el aumento masivo en computación
Machine Translated by Google
fuerza). En ese entonces, crear e implementar una ANN podría ser poco práctico en términos
de tiempo y otros recursos.
Pero todo cambió debido a más datos y mayor poder computacional. Es muy probable que
pueda implementar una red neuronal artificial directamente en su computadora de escritorio
o portátil. Y también, detrás de escena, las ANN ya están trabajando para brindarle los
resultados de búsqueda más relevantes, los productos más probables que comprará o los
anuncios más probables en los que hará clic. Las ANN también se utilizan para reconocer
el contenido de audio, imagen y video.
Muchos expertos dicen que solo estamos arañando la superficie y que las redes neuronales
artificiales todavía tienen mucho potencial. Es como cuando se realizó un experimento sobre
la electricidad (realizado por Michael Faraday) y nadie tenía idea de qué uso se obtendría
de ella. Según cuenta la historia, Faraday dijo que el primer ministro del Reino Unido pronto
podría gravarlo. Hoy en día, casi todos los aspectos de nuestras vidas dependen directa o
indirectamente de la electricidad.
Este también podría ser el caso de las redes neuronales artificiales y el apasionante campo
del aprendizaje profundo (un subcampo del aprendizaje automático que se centra más en
las RNA).
Con TensorFlow Playground podemos tener una idea rápida de cómo funciona todo. Vaya a
su sitio web (https://playground.tensorflow.org/) y tome nota de las diferentes palabras allí,
como Tasa de aprendizaje, Activación, Regularización, Funciones y Capas ocultas. Al
principio se verá así (no hiciste clic en nada
todavía):
Haga clic en el botón "Reproducir" (esquina superior izquierda) y vea la genial animación
(preste mucha atención a la Salida en el extremo derecho. Después de un tiempo, se verá así:
Machine Translated by Google
Las conexiones se hicieron más claras entre las funciones, las capas ocultas y la salida.
También observe que la salida tiene una región azul clara (mientras que el resto cae en
naranja). Esta podría ser una tarea de Clasificación en la que los puntos azules pertenecen a
la Clase A mientras que los naranjas pertenecen a la Clase B.
A medida que se ejecuta la ANN, observe que la división entre Clases A y Clase B se vuelve
más clara. Eso es porque el sistema está aprendiendo continuamente de los ejemplos de
entrenamiento. A medida que el aprendizaje se vuelve más sólido (o que las reglas se infieren
con mayor precisión), la clasificación también se vuelve más precisa.
Explorar TensorFlow Playground es una forma rápida de hacerse una idea de cómo funcionan
las redes neuronales. Es una visualización rápida (aunque no una representación 100 %
precisa) para que podamos ver las características, las capas ocultas y la salida. Incluso
podemos hacer algunos ajustes, como cambiar la tasa de aprendizaje, la proporción de
entrenamiento para probar los datos y la cantidad de capas ocultas.
Cuando hacemos clic en el botón Reproducir y dejamos que se ejecute durante un tiempo, de alguna manera la imagen
Machine Translated by Google
quedará así:
Preste atención a la salida. Nótese que la Clasificación parece peor. En lugar de incluir la
mayoría de los puntos amarillos en la región amarilla, hay muchos fallos (muchos puntos
amarillos caen en la región azul). Esto ocurrió debido al cambio en los parámetros que hemos
hecho.
De todos modos, si quiere tener una idea de cómo se vería una ANN en Python, aquí hay un
código de muestra: X = np.array([ [0,0,1],[0,1,1],[1,0 ,1],[1,1,1] ]) =
np.array([[0,1,1,0]]).T y syn0
= 2*np.random.random((3,4)) 1 syn1 =
2*np.random.random((4,1)) 1 para j en
xrange(60000): l1 = 1/
(1+np.exp((np.dot(X,syn0))) ) l2 = 1/
(1+np.exp((np.dot(l1,syn1)))) l2_delta = (y
l2)*(l2*(1l2)) l1_delta =
l2_delta.dot(syn1. T) * (l1 * (1l1))
Machine Translated by Google
syn1 += l1.T.dot(l2_delta)
syn0 += XTdot(l1_delta) De https://iamtrask.github.io/2015/07/12/basic pythonnetwork/
¿Podemos hacer que las computadoras entiendan palabras y oraciones? Como se mencionó
en el capítulo anterior, uno de los objetivos es igualar o superar importantes capacidades
humanas. Una de esas capacidades es el lenguaje (comunicación, saber el significado de algo,
llegar a conclusiones basadas en las palabras y oraciones).
Aquí es donde entra en juego el Procesamiento del Lenguaje Natural o PNL. Es una rama de la
inteligencia artificial en la que la atención se centra en comprender e interpretar el lenguaje
humano. Puede cubrir la comprensión e interpretación tanto del texto como del habla.
¿Alguna vez has hecho una búsqueda por voz en Google? ¿Está familiarizado con los chatbots
(responden automáticamente en función de sus consultas y palabras)? ¿Qué pasa con el
Traductor de Google? ¿Alguna vez ha hablado con un sistema de servicio al cliente de IA?
El procesamiento del lenguaje natural incluso se utiliza para comprender el contenido y evaluar
los sentimientos que se encuentran en las publicaciones de las redes sociales, comentarios de
blogs, reseñas de productos, noticias y otras fuentes en línea. La PNL es muy útil en estas
áreas debido a la disponibilidad masiva de datos de actividades en línea. Recuerde que
podemos mejorar enormemente nuestro modelo de análisis de datos y aprendizaje automático
si tenemos suficientes cantidades de datos de calidad para trabajar.
Uno de los usos más comunes de la PNL es comprender el sentimiento en un texto (por ejemplo,
¿es una reseña de producto positiva o negativa? ¿Qué dice el tweet en general?). Si solo
tenemos una docena de comentarios y reseñas para leer, no necesitamos ninguna tecnología
para hacer la tarea. Pero, ¿y si tenemos que lidiar con cientos o miles de oraciones para leer?
La tecnología es muy útil en esta tarea a gran escala. Implementar la PNL puede hacernos la
vida un poco más fácil e incluso hacer que los resultados sean un poco más consistentes y
reproducibles.
Machine Translated by Google
Sin embargo, la PNL es diferente porque tratamos principalmente con texto e idioma en lugar de
datos numéricos. Además, comprender un texto (p. ej., encontrar patrones e inferir reglas) puede
ser un gran desafío. Eso es porque el lenguaje a menudo es inconsistente y no tiene reglas
explícitas. Por ejemplo, el significado de la oración puede cambiar dramáticamente reorganizando,
omitiendo o agregando algunas palabras.
También está la cosa sobre el contexto en el que la forma en que se usan las palabras afecta en
gran medida el significado. También tenemos que lidiar con palabras de "relleno" que solo están
ahí para completar la oración pero no son importantes cuando se trata de significado.
Uso de NLTK
Afortunadamente, ahora hay conjuntos de bibliotecas y programas que hacen que el procesamiento
del lenguaje natural esté al alcance incluso de programadores principiantes y profesionales. Una
de las suites más populares es Natural Language Toolkit (NLTK).
Con NLTK (desarrollado por Steven Bird y Edward Loper en el Departamento de Informática y
Ciencias de la Información de la Universidad de Pensilvania), el procesamiento de texto se vuelve
un poco más sencillo porque implementará un código preconstruido en lugar de escribir todo desde
cero. De hecho, muchos países
Machine Translated by Google
Gracias !
¡Gracias por comprar este libro! Su objetivo es ayudarlo a comprender el análisis
de datos con Python. Si disfrutó de este libro y sintió que agregó valor a su vida,
le pedimos que se tome el tiempo para revisarlo.
Su retroalimentación honesta sería muy apreciada. Eso realmente marca la
diferencia.
Somos una editorial muy pequeña y nuestra supervivencia depende de sus reseñas.
Por favor, tómese un minuto para escribirnos una reseña honesta.
Machine Translated by Google
Fuentes y referencias
Gracias !
¡Gracias por comprar este libro! Su objetivo es ayudarlo a comprender el análisis
de datos con Python. Si disfrutó de este libro y sintió que agregó valor a su vida,
le pedimos que se tome el tiempo para revisarlo.
Su retroalimentación honesta sería muy apreciada. Eso realmente marca la
diferencia.
Somos una editorial muy pequeña y nuestra supervivencia depende de sus reseñas.
Por favor, tómese un minuto para escribirnos una reseña honesta.
Machine Translated by Google