Inteligencia Artificial - Segundo Parcial
Inteligencia Artificial - Segundo Parcial
Contenidos
• Árboles de Decisión
• Sobreajuste
• Recorte (Pruning)
Investigación Relacionada a los
Árboles de Decisión
• William of Occam inventa el criterio de Occam’s razor -
1320
• Hunt usa el método (CLS) para modelar aprendizaje
humano de conceptos - 1960’s.
• Quinlan desarrolla ID3 con la heurística de ganancia de
información para desarrollar sistemas expertos desde
ejemplos – 1970s
• Breiman, Friedman y otros desarrollan CART
(Classification and Regression Trees) similar a ID3 –
1970s
• Una variedad de mejorar se introducen para acomodar
ruido, características continuas, características
incompletas, mejoras en métodos de división – 1980s
• Quinlan’s actualiza sistemas de decision (C4.5) -1993.
• Weka se incluye una versión en Java de C4.5 llamado
J48.
Árboles de Decisión
• Clasificadores basados en árboles para instancias (datos)
representados como vectores de características (features).
• Nodos prueban características, hay una rama para cada valor de la
característica, las hojas especifican la categoría.
color color
red green red green
blue blue
shape shape
neg pos B C
circle circle
square triangle square triangle
pos neg neg A B C
Outlook
No Yes No Yes
Árbol de Decisión para PlayTennis
Outlook
Outlook
Wind No No
Strong Weak
No Yes
Árbol de Decisión para Disyunción
Outlook=Sunny Wind=Weak
Outlook
No Yes No Yes
Árbol de Decisión para XOR
Outlook=Sunny XOR Wind=Weak
Outlook
Outlook
(Outlook=Sunny Humidity=Normal)
(Outlook=Overcast)
(Outlook=Rain Wind=Weak)
Método Top-Down de
Construcción
• Construir un árbol Top-Down usando dividir para conquistar.
<big, red, circle>: + <small, red, circle>: + <small, red, triangle>: +
<small, red, square>: − <big, blue, circle>: − <small, green, triangle>: -
color
red green
blue
<big, red, circle>: +
<small, red, circle>: +
<small, red, square>: −
<small, red, triangle>: +
Método Top-Down de
Construcción
• Construir un árbol Top-Down usando dividir para conquistar.
<big, red, circle>: + <small, red, circle>: + <small, red, triangle>: +
<small, red, square>: − <big, blue, circle>: − <small, green, triangle>: -
color
red blue green
<big, red, circle>: + <small, green, triangle>: +
<small, red, circle>: + shape
neg neg
<small, red, square>: − circle <big, blue, circle>: −
square triangle
<small, red, triangle>: +
pos neg pos <small, red, triangle>: +
<big, red, circle>: + <small, red, square>: −
<small, red, circle>: +
Pseudocódigo para
Construcción de Árbol
DTree(examples, features) returns a tree
If all examples are in one category, return a leaf node with that category label.
Else if the set of features is empty, return a leaf node with the category label that
is the most common in examples.
Else pick a feature F and create a node R for it
For each possible value vi of F:
Let examplesi be the subset of examples that have value vi for F
Add an out-going edge E to node R labeled with the value vi.
If examplesi is empty
then attach a leaf node to edge E labeled with the category that
is the most common in examples.
else call DTree(examplesi , features – {F}) and attach the resulting
tree as the subtree under edge E.
Return the subtree rooted at R.
Seleccionar una Buena
Característica para Dividir
• Objetivo es tener un árbol que sea lo mas simple posible
(de acuerdo a Occam’s Razor)
• Encontrar un árbol mínimo de decisión (nodos, hojas o
profundidad) es un problema de optimización NP-hard.
• El método top-down que divide para conquistar hace
una búsqueda codiciosa (greedy) para obtener un árbol
simple pero no garantiza que sea el mas simple.
• Se quiere seleccionar una característica que genera
subconjuntos de ejemplos que son similares en una
clase para que estén cerca de ser nodos hojas.
• Hay una variedad de heurísticas para elegir un buen test
o condición, un método popular esta basado en el
incremento de la información (information gain) que se
origino con el sistema ID3 (Quinlan 1979).
Occam’s Razor
• Occam’s razor: Se debe preferir la hipótesis más corta
que tenga coincidencia (o describa) con los datos
Porque preferir hipótesis cortas?
Argumentos a favor:
– Hay menos hipótesis cortas que largas
– Es poco probable que una hipótesis corta que describa los datos
sea una coincidencia
– Una hipótesis larga que describa los datos puede ser una
coincidencia (sobreajuste o overfitting)
Argumentos en contra:
– Hay muchas maneras de definir hipótesis cortas y una definición
depende de la representación interna del que aprende (i.e. una
representación interna corta para uno puede ser larga para otro)
– Porque el tamaño de la hipótesis es importante?
Entropía
• Entropía (incertidumbre, desorden, impureza) de un conjunto de
ejemplos S, relativo a una clasificación binaria es:
Entropy (S ) = − p1 log 2 ( p1 ) − p 0 log 2 ( p 0 )
en el cual p1 es la fracción de ejemplos positivos en S y p0 es la
fracción de negativos.
• Si todos los ejemplos están en una categoría, entropía es zero
(definimos 0log(0)=0)
• Si los ejemplos están igualmente mezclados (p1=p0=0.5), entropía
es una máxima de 1.
• Entropía se puede ver como el máximo numero de bits requeridos
en promedio para codificar la clase de un ejemplo en S.
• Para problemas de múltiples clases (multi-class) con c categorías,
la entropía generaliza a:
c
Entropy(S) = ∑ − pi log2 ( pi )
i=1
Grafico de Entropía para
Clasificación Binaria
Incremento de la Información
• El incremento de información Gain(S, F) ocurre por reduccion
en la entropia esperada al ordenar S basado en atributo F
Sv
Gain(S, F ) = Entropy(S ) − ∑
vValues(F ) S
Entropy(S v )
Over
Sunny Rain
cast
[D1,D2,…,D14] Outlook
[9+,5-]
Outlook
No Yes No Yes
+ - +
A2
A1
+ - + + - -
+ - + - - +
A2 A2
- + - + -
A3 A4
+ - - +
Búsqueda en Espacio de Hipótesis (H)
de ID3
• Búsqueda en espacio de hipótesis es completa!
– La función objetiva seguramente esta ahí…
• Output es una hipótesis
• No hay vuelta atrás (backtracking) en los atributos
seleccionados (búsqueda codiciosa)
– Mínima local (divisiones suboptimas)
• Selecciones de búsqueda estadística
– Robusto a ruidos en datos
• Preferencia de inducción (search bias)
– Prefiere árboles cortos que largos
– Pone atributos con alta ganancia de información
cerca de la raíz
Búsqueda en Espacio de Hipótesis de
ID3
• Desarrolla aprendizaje en grupos (batch learning)
que procesa todas las instancia de entrenamiento
juntos en vez de aprendizaje incremental
(incremental learning) que actualiza una hipótesis
después de cada ejemplo.
• Garantizado de encontrar un árbol consistente con
cualquier conjunto de entrenamiento libre de
conflictos (i.e. vectores idénticos de características
siempre asignados la misma clase), pero no
necesariamente el árbol mas simple.
• Encuentra una hipótesis discreta.
Bias en Inducción de Árbol de Decisión
Fm
Máximo de n ejemplos esparcidos en todos
los nodos de los m niveles
∑ i
i=1
n = O(nm 2
)
• En la practica un árbol es raramente completo
(numero de hojas es n) y la complejidad es lineal
en m y n.
Árboles de Decisión
Contenidos
• Árboles de Decisión
• Sobreajuste
• Recorte (Pruning)
Sobreajuste (Overfitting)
• Crear un árbol que clasifique todos los datos de
entrenamiento perfectamente puede no llevarnos a un árbol
con la mejor generalización a datos desconocidos.
– Puede haber error en los datos de entrenamiento que el árbol esta
erróneamente ajustando.
– El algoritmo puede tomar malas decisiones cerca de las ramas
basado en pocos datos que no reflejan tendencias confiables.
• Una hipótesis, h, se dice que sobreajusta (overfits) los
datos de entrenamiento si es que existe otra hipótesis, h´, la
cual tiene más error que h en datos de entrenamiento pero
menos error en datos independientes de prueba.
on training data
accuracy
on test data
hypothesis complexity
Ejemplo: Sobreajuste
Probando la Ley de Ohm: V = IR (I = (1/R)V)
Experimentalmente
se miden 10 puntos current (I)
voltage (V)
current (I)
voltage (V)
Contenidos
• Árboles de Decisión
• Sobreajuste
• Recorte (Pruning)
Métodos de Prevención de
Sobreajuste (Recorte o Pruning)
• Dos ideas básicas para árboles de decisión
– Prepruning: Parar de crecer el árbol en algún punto durante
construcción top-down cuando no hay suficientes datos para
toma de decisiones confiables.
– Postpruning: Crecer el árbol completo, entonces eliminar
subarboles que no tengan suficiente evidencia.
• Etiquetar hoja que resulta de un recorte con la clase de
la mayoría de los datos que quedan o con la
distribución de probabilidades de la clase.
• Métodos para elegir subarboles a ser recortados:
– Validacion-cruzada: Reservar algunos datos de entrenamiento
(validation set, tuning set) para evaluar utilidad de
subarboles.
– Test estadístico: Usar un test estadístico en los datos de
entrenamiento para determinar si alguna regularidad
observada se puede eliminar por ser simplemente aleatoria.
– Minimum description length (MDL): Determinar si la
complejidad adicional de la hipótesis es menos compleja que
explícitamente recordar excepciones resultantes del recorte.
Reduced Error Pruning
• Un método basado en post-pruning y validación cruzada
Partition training data in “grow” and “validation” sets.
Build a complete tree from the “grow” data.
Until accuracy on validation set decreases do:
For each non-leaf node, n, in the tree do:
Temporarily prune the subtree below n and replace it with a
leaf labeled with the current majority class at that node.
Measure and record the accuracy of the pruned tree on the validation set.
Permanently prune the node that results in the greatest increase in accuracy on
the validation set.
Problemas con Reduced Error
Pruning
• El problema con este método es que
potencialmente “desperdicia” datos de
entrenamiento en el conjunto de validacion.
• Severidad de este problema depende de
adonde estamos en la curva de aprendizaje:
test accuracy
Referencias:
1 Mitchel, T., Machine Learning , McGraw Hill, 1997
2 Karray, F., De Silva, C., Soft Computing and Intelligent
Systems Design, Addison Wesley, 2004
3 Mooney, R., Machine Learning Slides, University of Texas
4 Hoffman, F., Machine Learning Slides, Stockholm University
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
Buscar
Python
IPython
EasyGUI
Tkinter
JupyterLab
Numpy
Anexos
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 1/16
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
Windows, MacOSX) y cuenta con librerías y drivers para desarrollar bases de datos con los entrada estándar (normalmente se
corresponde con...
lenguajes de programación más populares (Python, Perl, Java, Ruby, PHP, C, etc.).
Archivo
En Debian/Ubuntu:
python.org
$ sudo apt-get install sqlite3 libsqlite3-dev
En Windows:
Descargar archivos .zip del apartado "Precompiled Binaries for Windows" de la página de
pypi.org
En otros sistemas: Android, Mac OS X, Windows Phone 8
Bpython
Django
A continuación, el sistema comenzará la sesión de trabajo mostrando la siguiente información, y Flask
quedando a la espera de recibir comandos:
Ipython
IronPython
Matplotlib
MicroPython
Numpy
Pandas
Pillow
PortablePython
PyBrain
PyCharm
PyDev
PyGame
Pypi
Salir: .exit .quit
PyPy
Crear base de datos vacía o abrir existente: .open nombrebase.db
Pyramid
Listar bases de datos abiertas: .databases
Python.org
Listar tablas y vistas de una base de datos abiertai: .tables
PyTorch
Listar tablas utilizando patrones: .tables "prefijo%" .tables "%sufijo" SciPy.org
Listar esquema (estructura): .schema nombretabla ó .fullschema Spyder
Listar índices: .indexes ó .indices Tensorflow
Listar campos de una tabla: PRAGMA table_info("usuarios"); TurboGears
Ejecutar comandos SQL almacenados en un archivo: .read archivo.sql
Añadir base datos a sesión actual: ATTACH DATABASE "nueva.db" AS nueva;
Ayuda: .help
Una tabla es el objeto principal de una base de datos por ser el lugar donde se almacena la
información a gestionar. Una base de datos suele contener un conjunto de tablas y por sus
datos, algunas de ellas, pueden estar relacionadas entre sí.
Un registro es cada una de las filas en que se divide la tabla y un campo es cada una de las
columnas de la tabla que, normalmente, contienen datos de diferentes tipos.
Tipos de datos:
Fechas:
Las fechas en SQLITE3 se pueden almacenar en un campo como textos, números reales o
números enteros.
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 2/16
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
datetime('now', 'localtime'));
# Formato: juliano
# Formato: entero
$ sqlite3 nombrebase.db
# o bien
sqlite3
.open nombrebase.db
Crear tablas
La sentencia CREATE se utiliza para crear las tablas de una base de datos. En primer lugar, a
cada tabla se le asigna un nombre. Después, se define la lista de campos indicando para cada
uno de ellos el tipo de dato que va a contener (TEXT, INTEGER, REAL, TEXT y BLOB).
Además, cada campo puede incluir en su definición algunas restricciones básicas como NOT
NULL para que no contengan valores nulos o UNIQUE para que no se acepte un mismo dato en
diferentes filas o registros.
También, para garantizar la integridad de los datos de una base de datos pueden existir campos
declarados como PRIMARY KEY (claves primarias) o FOREIGN KEY (claves externas). Ver
apartados correspondientes.
id_dpto INTEGER,
);
);
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 3/16
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
INSERT
# Insertar un registro:
(dato21, dato22);
SELECT
La sentencia SELECT permite consultar los datos almacenados en una base de datos.
# Sintáxis de SELECT:
# FROM lista_tablas_o_vista
# WHERE filtro_a_nivel_de_fila
# ORDER BY campo
# GROUP BY campo
# HAVING filtro_a_nivel_de_agrupamiento;
# Claúsulas:
# nivel de filas.
# agregación).
# múltiples tablas.
# Operadores de comparación:
# Operadores:
# Ejemplos de SELECT:
SELECT campo1, campo2 FROM tabla1 ORDER BY campo1 ASC, campo2 DESC;
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 4/16
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
SELECT campo1, campo2 FROM tabla1 WHERE campo2 IN (1,2,3);
SELECT campo1, campo2, campo3 FROM tabla1 WHERE campo3 LIKE 'An%';
HAVING campo3 = 1;
tabla1.campo1 = tabla2.campo1;
SELECT campo1, campo2 FROM tabla1 CROSS JOIN tabla2 ORDER BY campo2;
UPDATE
La sentencia UPDATE se utiliza para actualizar datos en los registros o filas de una tabla.
DELETE
La sentencia DELETE sirve para borrar registros de las tablas de una base de datos.
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 5/16
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
# Borrar los registros que cumplan una condición:
REPLACE
Se utiliza para insertar una nueva fila o para reemplazar (borrar una fila existente e insertar una
nueva) en una tabla.
# Ejemplo
# tabla tabla1:
# 1, cadena1, 120000
# 2, cadena2, 100000
# 3, cadena3, 150000
# 1, cadena1, 120000
# 2, cadena2, 100000
# 3, cadena3, 150000
# 4, cadena4, 140000
# 2, cadena2, 100000
# 3, cadena3, 150000
# 4, cadena4, 140000
# 5, cadena1, 170000
Una clave primaria es un campo o combinación de campos que identifica de forma única a cada
fila de una tabla.
);
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 6/16
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
campo1 INTEGER,
campo2 INTEGER,
...
);
# La columna rowid:
# en MySQL o ProstgreSQL.
PRAGMA foreign_keys=off;
BEGIN TRANSACTION;
);
COMMIT;
PRAGMA foreign_keys=on;
PRAGMA table_info(tabla1);
);
Una clave externa es un campo (o varios) que señalan la clave primaria de otra tabla. El
propósito de la clave externa es asegurar la integridad referencial de los datos. La integridad
referencial es un sistema de reglas que utilizan la mayoría de las bases de datos relacionales
para asegurar que los registros de las tablas relacionadas son válidos; y para que no se borren o
cambien datos de forma accidental produciendo errores (de integridad).
# la clave externa.
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 7/16
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
# "campo3" de "tabla1" está vinculada con
campo3 INTEGER,
);
);
REFERENCES tabla_padre(clave_padre)
ON UPDATE acción
ON DELETE acción;
# Ejemplo:
campo4 INTEGER,
UPDATE NO ACTION
);
# Acciones:
# dependan de ella.
# PRAGMA foreign_keys;
# Desactivar restricciones:
# PRAGMA foreign_keys=OFF;
# PRAGMA foreign_keys=ON;
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 8/16
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
# Añadir campo o columna:
# valor NULL:
# borrar la tabla.
Una vista es una consulta que se presenta como una tabla (virtual) que se construye a partir de
los datos de una o más tablas relacionadas de una base de datos.
Las vistas tienen la misma estructura que una tabla normal (filas y columnas) con la diferencia de
que sólo almacenan la definición de una consulta, no los datos.
FROM tabla1
# Borrar vista:
Un índice permite consultar datos con más rapidez, acelerar la operación de ordenación y hacer
cumplir las restricciones únicas.
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 9/16
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
Cada índice debe estar asociado con una tabla específica. Un índice se compone de una o más
columnas pero todas las columnas de un índice deben estar en la misma tabla. Una tabla puede
tener varios índices.
# Crear índices:
# es único:
# Borrar índice:
# Sintaxis:
ON nombre_tabla
[WHEN condition]
BEGIN
declaraciones;
END;
BEGIN
SELECT
CASE
END;
END;
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 10/16
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
CREATE TRIGGER guardar_cambios AFTER UPDATE ON tabla1
BEGIN
VALUES
DATETIME('NOW'));
END;
# Borrar Trigger:
VACUUM;
# Iniciar transacción:
BEGIN TRANSACTION;
# Confirmar transacción:
COMMIT;
# Deshacer transacción:
ROLLBACK;
# Ejemplo:
BEGIN TRANSACTION;
INSERT INTO tabla1 (campo1, campo2, campo3) VALUES (10, 31, 41);
INSERT INTO tabla1 (campo1, campo2, campo3) VALUES (50, 90, 28);
COMMIT;
# longitud fija:
.output tabla1.txt
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 11/16
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
SELECT * FROM vista_tabla1;
.mode column
.output tabla1.csv
.separator ,
.mode csv
sqlite3 basedatos.bd
.output basedatos.sql
.dump
sqlite3 nueva_basedatos.bd
.read basedatos.sql
sqlite3 basedatos.bd
.output tabla1.sql
.dump tabla1
.output basedatos_estructura.sql
.schema
.mode insert
.output tabla1_datos.sql
.mode csv
# previamente la tabla:
.mode csv
sqlite3 basedatos.db
.output tabla1_datos_cabecera.csv
.headers on
.mode csv
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 12/16
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
SELECT * FROM tabla1;
En este caso práctico se crea una base de datos con cuatro tablas en las que se declaran claves
primarias y externas. También, se crean índices y vistas y se realizan operaciones con registros
habilitando las restricciones de clave externa para garantizar la integridad de los datos.
# Iniciar sqlite3:
sqlite3
.open redlocal.db
# Crear tablas:
id_usu INTEGER,
);
id_dpte INTEGER,
);
);
id_equipo INTEGER,
id_usu INTEGER,
);
PRAGMA foreign_keys=ON;
# Crear índices:
.schema dptes
# Listar índices
.indices
('Badminton'), ('Taekwondo');
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 13/16
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
INSERT INTO usuarios (cta_usu, nombre, id_dpto, ecorreo)
# Crear vistas
ON usuarios.id_usu = equipos.id_usu;
ON usuarios.id_dpte = dptes.id_dpte;
.tables
En este caso práctico se crea una base de datos con tres tablas en las que se declaran claves
primarias y externas. También, se crean índices y vistas y se realizan operaciones con registros
habilitando las restricciones de clave externa para garantizar la integridad de los datos.
También, se realizan operaciones sobre la base de datos para comprobar la acción "ON DELETE
CASCADE" utilizada en la declaración de las claves externas.
sqlite3
.open contactos.db
);
);
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 14/16
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
contacto_id integer,
grupo_id integer,
);
# Insertar registros
# 1|amigos
# 2|trabajo
# 1|1
# 2|1
# 1|2
# 2|2
# 3|2
# Crear vista:
# Luis|Carranza|[email protected]|amigos
# Clara|Campoamor|[email protected]|amigos
# Luis|Carranza|[email protected]|trabajo
# Clara|Campoamor|[email protected]|trabajo
# Dolores|Fuertes|[email protected]|trabajo
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 15/16
15/3/22, 13:22 Python 3 para impacientes: Guía rápida de SQLite3
# Luis|Carranza|[email protected]|amigos
# Clara|Campoamor|[email protected]|amigos
Inicio
Suscribirse a:
Entradas (Atom)
https://python-para-impacientes.blogspot.com/p/blog-page_27.html 16/16
15/3/22, 13:09 Pandas Basics - Learn Python - Free Interactive Python Tutorial
Pandas Basics
Pandas Basics
Pandas DataFrames
Pandas es una herramienta de manipulación de datos de alto nivel desarrollada por Wes McKinney. Es construido con el paquete
Numpy y su estructura de datos clave es llamada el DataFrame. El DataFrame te permite almacenar y manipular datos tabulados en filas
de observaciones y columnas de variables.
Hay varias maneras de crear un DataFrame. Una es usar un diccionario. Por ejemplo:
eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRpY3QgPSB7XCJjb3VudHJ5XCI6IFtcIkJyYXppbFwiLCBcIlJ1c3NpYVwiLCBcIkluZGlhXCIsIFwiQ2hpbmFcIiwgXCJTb3V0aCBBZnJpY2FcIl0
Como puedes ver con el nuevo DataFrame brics , Pandas tiene asignada una clave para cada país como valores numéricos de 0 a 4. Si
deseas tener diferentes valores de índice, por ejemplo el código del país de dos letras, tambien puedes hacerlo facilmente.
eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGljdCA9IHtcImNvdW50cnlcIjogW1wiQnJhemlsXCIsIFwiUnVzc2lhXCIsIFwiSW5kaWFcIiwgXCJDaGluYVwiLCBcIlNvdXRo
Otra manera de crear un DataFRame es importando un archivo csv usando Pandas. Ahora, el csv cars.csv es almacenado y puede ser
importado usando pd.read_csv :
eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZiA9IG9wZW4oJ2NhcnMuY3N2JywgXCJ3XCIpXG5mLndyaXRlKFwiXCJcIixjYXJzX3Blcl9jYXAsY291bnRyeSxkcml2ZXNfcm
Indexando DataFrames
Hay varias maneras de indexar un DataFrame de Pandas. Una de las más sencillas es usar la notación de corchetes.
En el ejemplo de debajo, puedes usar corchetes para seleccionar una columna del DataFrame cars . Puedes usar corchetes simples o
dobles. Los corchetes simples tienen salida a Pandas Series, mientras que los corchetes dobles tendrán salida a a Pandas DataFrame.
eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZiA9IG9wZW4oJ2NhcnMuY3N2JywgXCJ3XCIpXG5mLndyaXRlKFwiXCJcIixjYXJzX3Blcl9jYXAsY291bnRyeSxkcml2ZXNfcm
Los corchetes también pueden usarse para acceder a observaciones (filas) desde un DataFrame. Por ejemplo:
eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZiA9IG9wZW4oJ2NhcnMuY3N2JywgXCJ3XCIpXG5mLndyaXRlKFwiXCJcIixjYXJzX3Blcl9jYXAsY291bnRyeSxkcml2ZXNfcm
También puedes usar loc e iloc para realizar casi cualquier operación de selección de datos. loc está basado en etiquetas, lo que
significa que puedes especificar filas y columnas basadas en sus etiquetas de filas y columnas. iloc es un índice basado en enteros, así
que tienes que especificar las filas y columnas con su índice entero tal y como hiciste en el ejercicio anterior.
eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZiA9IG9wZW4oJ2NhcnMuY3N2JywgXCJ3XCIpXG5mLndyaXRlKFwiXCJcIixjYXJzX3Blcl9jYXAsY291bnRyeSxkcml2ZXNfcm
Start Exercise
Code Run
Reset
Solution
Buscar …
Menu
PYTHON
Tutorial de NLP con Python NLTK
(ejemplos simples)
Mokhtar Ebrahim
Publicada: septiembre 21, 2017 Última actualización: marzo 1, 2022
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 1/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
Tabla de contenidos
1. ¿Qúe es NLP?
2. Beneficios del NLP
3. Implementaciones del NLP
4. Librerías NLP
5. Instalar NLTK
6. Tokenizar un texto usando Python
7. Contar la frecuencia de palabras
8. Eliminar palabras de parada con NLTK
9. Tokenizar texto usando NLTK
10. Tokenizar textos que no están en inglés
11. Obtener sinónimos de WordNet
12. Obtener antónimos de WordNet
13. Derivación regresiva con NLTK (Word Stemming)
14. Derivación regresiva de palabras no inglesas
15. Palabras lematizadoras usando WordNet (Lemmatize Words)
16. Diferencia de derivación regresiva y lematización
¿Qúe es NLP?
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 2/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
Hay muchas empresas que reúnen todos estos datos para comprender a
los usuarios y sus pasiones y dar estos informes a las empresas para
ajustar sus planes.
Estos datos podrían mostrar que la gente de Brasil está contenta con el
producto A, que podría ser una película o cualquier cosa, mientras que la
gente de EE. UU. está contenta con el producto B. Y esto podría ser
instantáneo (resultado en tiempo real). Al igual que los motores de
búsqueda, dan los resultados adecuados a las personas adecuadas en el
momento adecuado.
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 3/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
Librerías NLP
Hay muchas librerías de NLP de código abierto y éstas son algunas de
ellas:
Apache OpenNLP.
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 4/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
Instalar NLTK
Si está usando Windows o Linux o Mac, puede instalar NLTK usando pip:
Puedes usar NLTK en Python 2.7, 3.4 y 3.5 en el momento de escribir esta
publicación.
Alternativamente, puedes instalarlo desde la fuente desde este tar.
Para verificar si la librería NLTK se ha instalado correctamente, puedes
abrir la terminal de Python y escribir lo siguiente:
Import nltk
Una vez que instalada la librería NLTK, debes instalar los paquetes NLTK
ejecutando el siguiente código:
import nltk
nltk.download()
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 5/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
Puedes instalar todos los paquetes ya que sus tamaños son pequeños
por lo que no habrá problema. Ahora comencemos el show.
import urllib.request
response = urllib.request.urlopen('http://php.net/')
html = response.read()
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 6/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
print (html)
import urllib.request
response = urllib.request.urlopen('http://php.net/')
html = response.read()
soup = BeautifulSoup(html,"html5lib")
text = soup.get_text(strip=True)
print (text)
Impresionante, ¿verdad?
import urllib.request
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 7/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
response = urllib.request.urlopen('http://php.net/')
html = response.read()
soup = BeautifulSoup(html,"html5lib")
text = soup.get_text(strip=True)
print (tokens)
Contar la frecuencia de palabras
import urllib.request
import nltk
response = urllib.request.urlopen('http://php.net/')
html = response.read()
soup = BeautifulSoup(html,"html5lib")
text = soup.get_text(strip=True)
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 8/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
freq = nltk.FreqDist(tokens)
Puedes elaborar un gráfico para esos tokens usando una función como
esta:
freq.plot(20, cumulative=False)
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 9/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
Desde el gráfico, puedes estar seguro de que este artículo está hablando
de PHP.
¡Estupendo!
Hay algunas palabras como The, Of, a, an, y así sucesivamente. Estas
palabras son palabras de parada (stop words).
stopwords.words('english')
Primero, haremos una copia de la lista, luego iteraremos sobre los tokens
y eliminaremos las palabras de parada:
clean_tokens = tokens[:]
sr = stopwords.words('english')
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 10/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
if token in stopwords.words('english'):
clean_tokens.remove(token)
from bs4 import BeautifulSoup
import urllib.request
import nltk
response = urllib.request.urlopen('http://php.net/')
html = response.read()
soup = BeautifulSoup(html,"html5lib")
text = soup.get_text(strip=True)
clean_tokens = tokens[:]
sr = stopwords.words('english')
if token in stopwords.words('english'):
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 11/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
clean_tokens.remove(token)
freq = nltk.FreqDist(clean_tokens)
freq.plot(20,cumulative=False)
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 12/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
Hello Adam, how are you? I hope everything is going well. Today
print(sent_tokenize(mytext))
La salida es la siguiente:
['Hello Adam, how are you?', 'I hope everything is going well.'
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 13/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
Hello Mr. Adam, how are you? I hope everything is going well. T
mytext = "Hello Mr. Adam, how are you? I hope everything is goi
print(sent_tokenize(mytext))
['Hello Mr. Adam, how are you?', 'I hope everything is going we
mytext = "Hello Mr. Adam, how are you? I hope everything is goi
print(word_tokenize(mytext))
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 14/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
La salida es:
['Hello', 'Mr.', 'Adam', ',', 'how', 'are', 'you', '?', 'I', 'h
print(sent_tokenize(mytext,"french"))
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 15/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
syn = wordnet.synsets("pain")
print(syn[0].definition())
print(syn[0].examples())
El resultado es:
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 16/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
syn = wordnet.synsets("NLP")
print(syn[0].definition())
syn = wordnet.synsets("Python")
print(syn[0].definition())
El resultado es:
synonyms = []
synonyms.append(lemma.name())
print(synonyms)
El resultado es:
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 17/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
¡Buenísimo!
si cada lema es un antónimo o no.
from nltk.corpus import wordnet
antonyms = []
for l in syn.lemmas():
if l.antonyms():
antonyms.append(l.antonyms()[0].name())
print(antonyms)
El resultado es:
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 18/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
palabra y todas derivan de la palabra raíz.
stemmer = PorterStemmer()
print(stemmer.stem('working'))
El resultado es:
work
Bastante claro.
from nltk.stem import SnowballStemmer
print(SnowballStemmer.languages)
'danish', 'dutch', 'english', 'finnish', 'french', 'german', 'h
french_stemmer = SnowballStemmer('french')
print(french_stemmer.stem("French word"))
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 20/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
from nltk.stem import PorterStemmer
stemmer = PorterStemmer()
print(stemmer.stem('increases'))
El resultado es:
increas
lemmatizer = WordNetLemmatizer()
print(lemmatizer.lemmatize('increases'))
El resultado es:
increase
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 21/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
lemmatizer = WordNetLemmatizer()
print(lemmatizer.lemmatize('playing', pos="v"))
El resultado es:
play
lemmatizer = WordNetLemmatizer()
print(lemmatizer.lemmatize('playing', pos="v"))
print(lemmatizer.lemmatize('playing', pos="n"))
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 22/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
print(lemmatizer.lemmatize('playing', pos="a"))
print(lemmatizer.lemmatize('playing', pos="r"))
El resultado es:
play
playing
playing
playing
stemmer = PorterStemmer()
lemmatizer = WordNetLemmatizer()
print(stemmer.stem('stones'))
print(stemmer.stem('speaking'))
print(stemmer.stem('bedroom'))
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 23/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
print(stemmer.stem('jokes'))
print(stemmer.stem('lisa'))
print(stemmer.stem('purple'))
print('----------------------')
print(lemmatizer.lemmatize('stones'))
print(lemmatizer.lemmatize('speaking'))
print(lemmatizer.lemmatize('bedroom'))
print(lemmatizer.lemmatize('jokes'))
print(lemmatizer.lemmatize('lisa'))
print(lemmatizer.lemmatize('purple'))
El resultado es:
stone
speak
bedroom
joke
lisa
purpl
----------------------
stone
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 24/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
speaking
bedroom
joke
lisa
purple
La derivación funciona con palabras sin conocer su contexto y es por eso
que la raíz tiene una precisión menor, pero, es más rápida que la
lematización.
En mi opinión, la lematización es mejor que la derivación. Word
lemmatizing devuelve una palabra real, incluso si no es la misma palabra,
podría ser un sinónimo, pero al menos es una palabra real.
Hice todo lo posible para que el artículo sea lo más sencillo y simple
posible. Espero que le sea útil.
Mokhtar Ebrahim
Fundadora de LikeGeeks. Estoy trabajando como administrador de sistemas Linux
desde 2010. Soy responsable de mantener, proteger y solucionar problemas de
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 25/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
stemmer = PorterStemmer()
print(stemmer.stem(‘trabajando’))
gracias.
Responder
Gracias,
Responder
En español no funciona.
Responder
Responder
Comentario *
Publicar el comentario
Suscribir
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 27/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
ANUNCIOS
ANUNCIOS
ÚLTIMAS PUBLICACIONES
Algoritmo Depth First Search en Python (múltiples ejemplos)
ANUNCIOS
ANUNCIOS
ARTÍCULOS RELACIONADOS
Algoritmo Depth First Search en Python (múltiples ejemplos)
ANUNCIOS
ANUNCIOS
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 29/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
ÚLTIMOS COMENTARIOS
Mokhtar Ebrahim en Moderna web scraping en Python (Beautiful Soup y Selenium)
ANUNCIOS
ANUNCIOS
ELEGIDO PARA TI
31+ ejemplos para el comando sed de Linux en la manipulación de texto
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 30/31
15/3/22, 13:19 Tutorial De NLP Con Python NLTK (ejemplos Simples) - Like Geeks
ANUNCIOS
ANUNCIOS
Aviso Legal
Política de privacidad
Acerca de
Contacto
https://likegeeks.com/es/tutorial-de-nlp-con-python-nltk/ 31/31
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Aprende
Machine
Learning
en Español
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 1/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
PRÁCTICA
Hoy veremos un nuevo ejercicio práctico, intentando llevar los algoritmos de Machine
Learning a ejemplos claros y de la vida real, repasaremos la teoría del Teorema de
Bayes (video) de estadística para poder tomar una decisión muy importante: ¿me
conviene comprar casa ó alquilar?
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 2/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 3/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Veamos si la Ciencia de Datos nos puede ayudar a resolver el
misterio… ¿Si alquilo estoy tirando el dinero a la basura? ó ¿Es
realmente conveniente pagar una hipoteca durante el
<<resto de mi vida>>?
Para realizar este ejercicio, crearemos una Jupyter notebook con código Python y la
librería SkLearn muy utilizada en Data Science. Recomendamos utilizar la suite para
Python de Anaconda. Puedes leer este artículo donde muestro paso a paso como
instalar el ambiente de desarrollo. Podrás descargar los archivos de entrada csv o
visualizar la notebook online (al final de este artículo los enlaces).
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 4/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Python
1 import pandas as pd
2 import numpy as np
3 import matplotlib.pyplot as plt
4 from matplotlib import colors
5 import seaborn as sb
6
7 %matplotlib inline
8 plt.rcParams['figure.figsize'] = (16, 9)
9 plt.style.use('ggplot')
10
11 from sklearn.model_selection import train_test_split
12 from sklearn.metrics import classification_report
13 from sklearn.metrics import confusion_matrix
14 from sklearn.naive_bayes import GaussianNB
15 from sklearn.feature_selection import SelectKBest
Python
1 dataframe = pd.read_csv(r"comprar_alquilar.csv")
2 dataframe.head(10)
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 5/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
pago coche: si se está pagando cuota por uno o más coches, y los gastos en
combustible, etc al mes.
gastos_otros: compra en supermercado y lo necesario para vivir al mes
ahorros: suma de ahorros dispuestos a usar para la compra de la casa.
vivienda: precio de la vivienda que quiere comprar esa familia
estado civil:
0-soltero
1-casados
2-divorciados
hijos: cantidad de hijos menores y que no trabajan.
trabajo:
0-sin empleo 1-autónomo (freelance)
2-empleado
3-empresario
4-pareja: autónomos
5-pareja: empleados
6-pareja: autónomo y asalariado
7-pareja:empresario y autónomo
8-pareja: empresarios los dos o empresario y empleado
comprar: 0-No comprar 1-Comprar (esta será nuestra columna de salida, para
aprender)
Con esta información, queremos que el algoritmo aprenda y que como resultado
podamos consultar nueva información y nos dé una decisión sobre comprar (1) o
alquilar (0) casa.
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 6/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
El teorema de Bayes
El teorema de Bayes es una ecuación que describe la relación de
probabilidades condicionales de cantidades estadísticas. En clasificación
bayesiana estamos interesados en encontrar la probabilidad de que ocurra
una “clase” dadas unas características observadas (datos). Lo podemos escribir
como P( Clase | Datos). El teorema de Bayes nos dice cómo lo podemos
expresar en términos de cantidades que podemos calcular directamente:
Si estamos tratando de elegir entre dos clases como en nuestro caso “comprar” ó
“alquilar”, entonces una manera de tomar la decisión es calcular la tasa de
probabilidades a posterior:
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 7/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 8/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Bien!, Fin de teoría, sigamos con el ejercicio! Ahora toca visualizar nuestras entradas y
programar un poquito.
Visualización de Datos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 9/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Python
1 print(dataframe.groupby('comprar').size())
comprar
0 135
1 67
dtype: int64
Esto son 67 que entradas en las que se recomienda comprar y 135 en las que no.
Python
1 dataframe.drop(['comprar'], axis=1).hist()
2 plt.show()
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 10/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Python
1 dataframe['gastos']=(dataframe['gastos_comunes']+dataframe['gastos_otros']+dataframe['pago_coche
2 dataframe['financiar']=dataframe['vivienda']-dataframe['ahorros']
3 dataframe.drop(['gastos_comunes','gastos_otros','pago_coche'], axis=1).head(10)
Y ahora veamos un resumen estadístico que nos brinda la librería Pandas con
describe():
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 11/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
En este ejercicio haremos Feature Selection para mejorar nuestros resultados con
este algoritmo. En vez de utilizar las 11 columnas de datos de entrada que tenemos,
vamos a utilizar una Clase de SkLearn llamada SelectKBest con la que
seleccionaremos las 5 mejores características y usaremos sólo esas.
Python
1 X=dataframe.drop(['comprar'], axis=1)
2 y=dataframe['comprar']
3
4 best=SelectKBest(k=5)
5 X_new = best.fit_transform(X, y)
6 X_new.shape
7 selected = best.get_support(indices=True)
8 print(X.columns[selected])
Bien, entonces usaremos 5 de las 11 características que teníamos. Las que “más
aportan” al momento de clasificar. Veamos qué grado de correlación tienen:
Python
1 used_features =X.columns[selected]
2
3 colormap = plt.cm.viridis
4 plt.figure(figsize=(12,12))
5 plt.title('Pearson Correlation of Features', y=1.05, size=15)
6 sb.heatmap(dataframe[used_features].astype(float).corr(),linewidths=0.1,vmax=1.0, square=True, cm
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 12/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Con esto comprobamos que en general están poco correlacionadas, sin embargo
también tenemos 2 valores de 0,7. Esperemos que el algoritmo sea lo
suficientemente “naive” para dar buenos resultados 😉
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 13/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Python
1 # Split dataset in training and test datasets
2 X_train, X_test = train_test_split(dataframe, test_size=0.2, random_state=6)
3 y_train =X_train["comprar"]
4 y_test = X_test["comprar"]
Python
1 # Instantiate the classifier
2 gnb = GaussianNB()
3 # Train classifier
4 gnb.fit(
5 X_train[used_features].values,
6 y_train
7 )
8 y_pred = gnb.predict(X_test[used_features])
9
10 print('Precisión en el set de Entrenamiento: {:.2f}'
11 .format(gnb.score(X_train[used_features], y_train)))
12 print('Precisión en el set de Test: {:.2f}'
13 .format(gnb.score(X_test[used_features], y_test)))
Pues hemos obtenido un bonito 90% de aciertos en el conjunto de Test con nuestro
querido clasificador bayesiano. También puedes ver los resultados obtenidos
aplicando PCA en este otro artículo!
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 14/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
En un caso será una familia sin hijos con 2.000€ de ingresos que quiere
comprar una casa de 200.000€ y tiene sólo 5.000€ ahorrados.
El otro será una familia con 2 hijos con ingresos por 6.000€ al mes, 34.000 en
ahorros y consultan si comprar una casa de 320.000€.
Python
1 # ['ingresos', 'ahorros', 'hijos', 'trabajo', 'financiar']
2 print(gnb.predict([[2000, 5000, 0, 5, 200000],
3 [6000, 34000, 2, 5, 320000] ]))
4 #Resultado esperado 0-Alquilar, 1-Comprar casa
[0 1]
Los resultados son los esperados, en el primer caso, recomienda Alquilar (0) y en el
segundo comprar la casa (1).
Conclusiones
Naive Bayes como clasificador se utiliza mucho en NLP (Natural Language Processing)
tanto en el típico ejemplo de detectar “Spam” o no como en tareas más complejas
como reconocer un idioma o detectar la categoría apropiada de un artículo de texto.
También puede usarse para detección de intrusiones o anomalías en redes
informáticas y para diagnósticos médicos dados unos síntomas observados. Por
último veamos los pros y contras de utilizar Gaussian Naive Bayes: Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 15/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Si les gustó el artículo les pido como favor si pueden ayudarme a difundir estas
páginas en vuestras redes sociales.
Además, como siempre, los invito a suscribirse al Blog ingresando una dirección de
email y recibirán una notificación cada 15 días (aprox.) con un nuevo artículo sobre
Aprende Machine Learning!.
Suscripción al Blog
Recibe el próximo artículo quincenal sobre Data Science y Machine Learning con
Python
ENVIAR
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 16/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Comparte el artículo:
Relacionado
Perfiles y Roles para Proyectos IA, ¿Qué es Machine Learning? Una Principales Algoritmos usados en
Machine Learning y Data Science definición Machine Learning
Libros Relacionados
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 17/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
18 comments
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 18/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Muy bueno el artículo!, muchas gracias. Una consulta: como hago para
usar un archivo CVS para hacer las predicciones y que la predicción quede
guardada en el mismo archivo como un campo más?
Reply
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 19/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 20/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 21/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Un saludo,
Hector
Reply
Hola Juan Ignacio, muchas gracias por estos artículos. Apenas empecé en
este mundo de la inteligencia artificial este año y me está encantando.
Estoy reforzando mucho los temas que estoy viendo con tus ejercicios.
Te hago una pregunta, cuando doy mi correo para recibir los artículos
quincenales, en el correo no me deja dar clic a la suscripción. Quisiera
saber si ya estoy en tus bases de datos para recibir los correos.
Muchas gracias
Reply
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 22/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
XXX
Reply
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 23/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Na8 · November 29
Leave a Reply
Buscar
Search …
Contacto
Suscripción
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 24/25
15/3/22, 13:13 ¿Comprar casa o Alquilar? Naive Bayes usando Python | Aprende Machine Learning
Recibe los artículos de Aprende Machine Learning en tu casilla de correo. Cada 15 días y sin
Spam!
ENVIAR
Privacidad - Términos
https://www.aprendemachinelearning.com/comprar-casa-o-alquilar-naive-bayes-usando-python/ 25/25
Introducción a las Redes
Neuronales
Ph.D Darwin Patiño Pérez
Octubre 2020
Introducción a las Redes Neuronales
Contenidos
• Introducción a las neuronas
• Introducción a las redes neuronales artificiales (ANN)
• Introducción a algunos algoritmos de aprendizaje de
las ANNs
Introducción a las Neuronas
• En nuestro sistema nervioso existen células
llamadas neuronas que son una unidad de
procesamiento que recibe un estimulo
eléctrico de otras neuronas principalmente a
través de su árbol dendrítico
• El estimulo eléctrico recibido al pasar de un
cierto umbral causa que la neurona a su vez
envie una señal eléctrica a través de su axon
a otras sucesivas neuronas
• Basado en la fuerza de interconexión entre
las neuronas la red puede ser capaz de
cómputos y detección de patrones complejos
Neuronas Reales
vaina de mielina
terminal axonico
Membrana
Mitocondria
sinapses
Nucleo
Ribosoma
Sinapsis
• Cuando el árbol dendrítico recibe impulsos eléctricos
sobre un umbral voltaje especifico la neurona manda una
señal eléctrica a través del axon a los terminales
axonicos
• En esos terminales se conectan los terminales axonicos
(a través de sinapsis) a otras neuronas
• Los terminales axonicos se pueden conectar a través de
sinapsis a diferentes partes de la neurona pero
típicamente se considera solo la conexión a otras
dendritas
Sinapse • Dependiendo del neurotransmisor
Axon Dendrita (ion) el potencial inducido en
terminal postsinaptico (dendrita)
puede ser positivo (excitado) o
negativo (inhibidor)
30 nm
s1
mV s2
s1 + s2
tiempo
Polarización de las Neuronas
• Cuando la neurona es estimulada pasado un voltaje umbral
(VT) se despolariza (TDP) la membrana y las bombas de
sodio-potasio paran de actuar, la membrana cambia de
estado y se convierte mas permeable al ion positivo de
NA+ que al entrar a la neurona cambia el potencial a través
de la membrana neuronal a positivo (+ 40mV)
• Después hay un periodo refractario (TR) de ~ 1ms en el
cual se cierran los canales de NA+, la membrana vuelve a
ser permeable a K+, las bombas se activan y la neurona
logra su voltaje inicial a través del escape de K+ en este
periodo la neurona no es susceptible a estímulos sinápticos
Modelo de una Neurona
• McCulloch and Pitts (1943) desarrollaron el modelo
original de una neurona esta incluyo diferentes inputs
(x), pesos para esos inputs (w), una función nolinear
(f) de transferencia y el Output (O)
• En el modelo original no se incluyo un profesor
(Teacher) para entrenar a la red
• La función no lineal de transferencia usada era el
escalón (hard limit o step function)
• Se incluyo un input de bias para evitar outputs no
deseados cuando los inputs son zero
Modelo MP de una Neurona
Contenidos
• Introducción a las neuronas
• Introducción a las redes neuronales artificiales (ANN)
• Introducción a algunos algoritmos de aprendizaje de
las ANNs
Redes Neuronales Artificiales (ANNs)
• Las ANNs son un paradigma para hacer
computo y para la detección de patrones
basado en la interconexión paralela de
neuronas artificiales
• Las ANNs son un modelo basado en los
complejos sistemas nerviosos de los
animales y seres humanos con su gran
cantidad de interconexiones y paralelismo
• Los comportamientos inteligentes de estos
son una propiedad emergente del gran
numero de unidades no un resultado de
reglas simbólicas o algoritmos
Redes Neuronales Artificiales (ANNs)
• Las características previamente expuestas de las
neuronas se duplican para crear redes de neuronas
artificiales que tienen capacidades similares de
procesar información en forma paralela.
• Algunas capacidades de las redes neuronales son:
1. Aprendizaje
2. Clasificación
3. Almacenaje de información
4. Interpolarización
5. Adaptación
Redes Neuronales Artificiales (ANNs)
• Las redes neuronales artificiales recrean o modelan
las características de las neuronas ya mencionadas
en sistemas computacionales de software y
hardware
• Usan grupos de muchas neuronas artificiales (como
la neurona McCulloch-Pitts o MP)
• Usan principios de computación colectiva y
descentralizada (paralela)
• Son capaces de aprender
Redes Neuronales Artificiales (ANNs)
• Operaciones robustas y resistentes a fallas de
neuronas individuales
• La red hace asociaciones automáticamente
• La red crea el “programa” al ajustar los pesos
durante su aprendizaje
• Al operar requieren de sincronizidad o que las
señales entren al mismo tiempo a todas las neuronas
en el mismo nivel (no así las biológicas que usan la
suma espacio-temporal)
Redes Neuronales Multicapa
• El modelo de una red neuronal con múltiples capas
difiere de las que hemos visto hasta ahora en que
incluye neuronas en capas escondidas
• Una capa escondida significa que no es visible ni al
input ni al output
• Un perceptron de dos capas puede discernir
regiones poligonales, uno de tres o mas capas puede
discernir regiones arbitrarias (Multi Layer Perceptron
o MLP)
Redes Neuronales Multicapa
• Multilayer feedforward/backward
• Monolayer with feedback
• Otras… (aquí entra la imaginacion)
Introducción a las Redes Neuronales
Contenidos
• Introducción a las neuronas
• Introducción a las redes neuronales artificiales (ANN)
• Introducción a algunos algoritmos de aprendizaje de
las ANNs
Algoritmos de Aprendizaje
• El proceso de aprendizaje es el proceso por el cual la red
neuronal se adapta al estimulo modificando sus pesos y
eventualmente produce un resultado esperado
• Hay dos tipos de aprendizaje: supervisado y sin
supervisión
• Aprendizaje supervisado incluye un supervisor (o teacher)
que le indica a la red cuan cerca esta de aprender y va
modificando los pesos neuronales
• Sin supervisión solamente se forman grupos de
clasificación de acuerdo a indicaciones o propiedades, no
se calcula un error (E)
• Se puede usar el error o el gradiente de error para que la
red aprenda
• La dirección del gradiente es hacia incrementar el Error
por ende se cambian los pesos hacia la dirección inversa
Aprendizaje Supervisado
• El modelo de aprendizaje con profesor (teacher) significa
que durante el aprendizaje hay circuitos (o programas)
externos a la neurona que comparan el output deseado (Ti)
con el actual (Oi) y producen el error entre ellas (Ei= Ti - Oi)
• Usando el error (Ei) un algoritmo de aprendizaje modifica
los valores de los pesos uno por uno tratando de minimizar
el error, este proceso requiere de muchas iteraciones
Aprendizaje usando Perceptron Training
w1j
xj
• Equivalente a las reglas:
– Si Ti > Oi se quiere incrementar Oi entonces si xj > 0
se incrementa wi pero si xj < 0 se reduce wi
– Si Ti < Oi se quiere reducir Oi entonces si xj > 0 se
reduce wi pero si xj < 0 se incrementa wi
Perceptron Learning
Algoritmo:
1- Asignar umbrales y pesos a valores iniciales aleatorios
2- wij(k+1) = wij(k) + η(E(k))xj
3 Se puede usar cualquier función no lineal (f) ya que el
aprendizaje no depende del calculo de un derivado
4 Se continua iterando hasta que se llega a un output
deseado, que se llego a un numero de iteraciones o
que los pesos no están cambiado
Perceptron como un Separador Lineal
• El perceptron implementa una función lineal del umbral,
de esta forma busca un separador lineal que discrimina
entre las clases
w11x1 + w12 x2 1
x2
w11 1
x2 − x1 +
?? w12 w12
−1if S1 1
O1 =
1if S1 1
x1 Un hyperplano en espacio
de n dimensiones
Perceptron como un Separador Lineal II
b = a − F (a)
F(w)
F(a) F(w)
isolines
a b
Aprendizaje usando Gradiente
oj
0
Θj Sj
Función de Output Diferenciable
1
oj = 1
1+ e−( S j − j )
0
Θj Sj
w1j
xj
• ADALINE (Widrow) es un modelo de una neurona:
n
S = wi xi + w0
i=1
• Es entrenado usando el Delta Rule o Least Mean Squared
Error [Mitchell]: r 1
2
E(w ) = (T d − Sd )
2dD
• Se calcula el gradiente del error E(w) y se modifican los
pesos en la dirección contraria (D es el set de ejemplos):
E 1
= 2(Td − S d )(−xid ) = − (Td − Sd )(xid )
wi 2 dD dD
• Finalmente:
E
wi (k +1) = wi (k ) + wi (k ) = wi (k ) − = wi (k ) + (Td − Sd )( xid )
wi dD
Delta Learning con función no lineal
sigmoide
• Ha sido usado con redes de 1 o mas capas [Kartalopoulos]
• Basado en minimización del Least Squared Error (LSE)
• Objetivo es expresar la diferencia entre el output deseado (T) y el actual (O
o f(S)) en termino de los inputs y los pesos
−x
• Utiliza la función no lineal sigmoide : f s ( x ) = 1/(1 + e )
• Su derivado : f '(x) = [1− f (x)] f (x)
E 1
= 2(Td − f (S d )) f '(S d )(S') = (Td − f (S d )) f '(S d )(−xid )
wi 2 dD dD
• Finalmente:
E
wi (k +1) = wi (k ) − = wi (k ) + (Td − f (S d )) f '(S d )(xid )
wi dD
Ejemplo: delta learning algorithm
x +1
Ejemplo: delta learning algorithm
f
AND
f
Otros Algoritmos
• Reforzado:
– Se le indica a la red que ha pasado o fallado o sea el
valor de E es P/F o 1/0
• Competitivo:
– Hay múltiples neuronas en la capa del output y se
entrena la red para que una neurona en el output este
correcta y las otras no producen outputs dependiendo
del estimulo
Redes Multi Capa
input
Ejemplo3: Backpropagation
output
i l = oi l (1− oi l ) k l+1wkil+1
k hidden
input
Ejemplo3: Backpropagation
output
i l = oi l (1− oi l ) k l+1wkil+1
k
hidden
l l -1
wij = i o j
input
Algoritmo Backpropagation
• No es garantizado que converja a zero en error de
entrenamiento, puede converger a mínima local o
oscilar
• En la practica converge a un bajo error para muchas
redes
• Muchas épocas (miles de iteraciones) pueden ser
requeridas
• Para evitar mínima local usar varias corridas (runs)
con pesos inicializados aleatoriamente (random
restarts).
– Tomar resultados de red que da menor error
Poder de Representación
test data
training data
0 # training epochs
• Hay que mantener un set de validación para probar
la precisión después de cada iteración.
• Se detiene el entrenamiento cuando iteraciones
adicionales incrementan el error de validación.
Determinando el Numero de Neuronas
Escondidas
• Muy pocas neuronas escondidas causan que la red no
pueda aprender la función deseada correctamente.
• Muchos nodos escondidos causan sobre aprendizaje.
error
test data
training data
0 # hidden units
• Se debe obtener empíricamente con diferentes
configuraciones de la red.
Aprendizaje no supervisado
• Hebbian learning
wi = xi y
– los pesos en una neurona es incrementada
de acuerdo a la actividad correlacionada
entre su input y actividad post sinaptica
(dado su output)
– Neuronas que disparan juntas se conectan
mas fuertemente
– En este algoritmo el valor Ti no existe
y=wx
j j
– Los pesos tienen valores iniciales pequeños j
– Se comienza con una tasa de aprendizaje
pequeña
x1 wi11
wi21 Si1 Oi1 xj wji2 Sj3 Oj3
x2
f f
wiN1
xN
Aprendizaje no supervisado
Referencias:
[1] Jang, J-S.R. Et al, “Neuro-Fuzzy and Soft Computing”,
Prentice Hall, 1997
[2] Neelakanta, P., DeGroff, D., Neuronal Network Modeling,
CRC, Boca Raton, 1994
3 Mitchel , T., “Machine Learning”, McGraw-Hill, 1997
4 Mooney, R., Apuntes Curso University of Texas, 2006
5 Simulador NN: www-ra.informatik.uni-tuebingen.de/SNNS/
6 Kartalopoulos, S., Understanding Neuronal Networks and
Fuzzy Logic, IEEE Press, 1994
7 Dowla, F., Rogers, L., Solving Problems in Environmental
Engineering and Geosciences with Artificial Neuronal
Networks, MIT Press, 1995
8 http://en.wikipedia.org/wiki/Hebbian_theory
9 http://en.wikipedia.org/wiki/Self-organizing_map
Keras en la
creación de
RNA
Uso de Keras en la creación de
Redes Neuronales Atificiales
con Python
Redes Neuronales
Artificiales
Que Son ?
Generalmente se usan en un Regresión(cuando son
tipo de aprendizaje numeros) o
supervisado. A partir de datos Clasificación(cuando se trata
de entrada y salidas. de etiquetas).
Aprendizaje
Supervisado
Aquí lo que se busca, es la función que relaciona los
datos de entrada, con los datos de salida; Si por
ejemplo los datos de entrada son caballos entonces
buscamos las etiquetas de salida llamada “caballo”.
Como lo hace ?
modelo paramétrico
NEURONA: En su forma mas básica
El cuerpo central, llamado soma, contiene el núcleo celular.
Una prolongación del soma, es el axón.
Un conjunto de ramificaciones terminales, las dendritas.
Las zonas de conexión entre una neurona y otra, son conocidas como sinapsis.
La Neurona
Biológica
La función principal de las neuronas es la transmisión de impulsos nerviosos. Estos viajan por toda la neurona
comenzando por las dendritas hasta llegar a las terminaciones del axón, donde pasan a otra neurona por medio de la
conexión sináptica.
Modelo neuronal de McCulloch-Pitts.
El primer modelo matemático de una neurona artificial, fue creado con el fin de llevar a cabo tareas simples, fue presentado
en el año 1943 en un trabajo conjunto entre el psiquiatra y neuroanatomista Warren McCulloch y el matemático Walter Pitts.
La Neurona
Artificial
cada entrada x tiene asociado un peso p, por lo que p4= σ(𝑋𝑛 ∗ 𝑃𝑛)
Red Neuronal
Características de KERAS
STACK
Keras
keras
TensorFlow
cuda
CPU GPU
# Importar librerías
# Cargar la información
Secciones para la
# Declaración de variables importantes
creación de un
# Crear el modelo
modelo de red
neuronal artificial # Agregar capas
usando # Compilar
# Entrenar
Keras
Secciones para la
creación de un
modelo
Keras
Secciones para la
creación de un
modelo
Keras
Librerías y
paquetes de
Python
# Importar librerías
Se importan las Librerías(Keras y Pandas) así como los paquetes(Sequential y
Dense)
import keras
from keras.models import Sequential
from keras.layers import Dense
import pandas as pd
# Cargar la información
Secciones para Usando Pandas se carga el dataset
data_columnas = data.columns
labels = data[data_columnas[data_columnas != 'Strength']]
target = data['Strength']
n_cols = labels.shape[1]
#CREANDO LA RED NEURONAL CON KERAS
# Importar librerías
Se importan las Librerías(Keras y Pandas) así como los paquetes(Sequential
y Dense)
# Cargar la información
Usando Pandas se carga el dataset
# Declaración de variables importantes
1)se asigna a data_columnas las columnas del dataset
2)traigo los labels que son las propiedades del concreto diferentes y que
son diferentes a la fuerza o target que queremos predecir.
La Neurona 3)traigo la columna target que es la fuerza
4)ncols que lo obtengo con shape[1] la segunda posición es columna la
primera es el numero de filas
Artificial # Crear el modelo
Keras tiene 2 tipos de modelos, el secuencial y el funcional, escogemos el
modelo secuencial.
# Agregar capas
una vez creado el modelo, lo alimentamos con capas, de entrada con dos
capas, la primera que será la de input (a la cual le inyectaremos los datos ) y
a la ultima la output que tendrá la predicción las de en medio son las hidden
layers y cuando hay muchas capas hemos pasado de machine learning a
deeplearning.
cada entrada x tiene asociado un peso p, por lo que p4= σ(𝑋𝑛 ∗ 𝑃𝑛)
# Compilar
Se compila
# Entrenar
Se entrena
#Use to import pandas
import pandas as pd
desde colab de # Now use the below code to read the csv in pandas' dataframe
# df = pd.read_csv(io.StringIO(uploaded[‘f.csv'].decode('utf-8')))
Google df = pd.read_csv('equiposF.csv’,sep=‘,’,header=0)
print(df)
print(df.head())
print(df.ix[0:3])
Usando pandas
print(df[‘Nombre’])
Cinco pasos básicos para implementar la regresión lineal
scikit-learn
#En colab de Google
import csv
import pandas as pd
from google.colab import files
uploaded = files.upload()
df = pd.read_csv('equiposF.csv',sep=';',header=0)
print(df)
import pandas as pd
df = pd.read_csv('../input/dataset/data.csv', index_col=0)
print(df)
#En Visual Studio Code: aquí se pone la ruta de la capeta de
donde esta el .csv a leerse.
import pandas as pd
df = pd.read_csv('E:/CICLO-2/IA/pandas/data.csv', index_col=0)
print(df)
Un claro ejemplo es al clasificar correos entrante entre Spam o no. Entre las diversas características que queremos entrenar
deberemos incluir si es correo basura o no con un 1 o un 0. Otro ejemplo son al predecir valores numéricos por ejemplo
precio de vivienda a partir de sus características (metros cuadrados, nº de habitaciones, incluye calefacción, distancia del
centro, etc.) y deberemos incluir el precio que averiguamos en nuestro set de datos.
En el aprendizaje No Supervisado los datos de entrenamiento no incluyen Etiquetas y el algoritmo intentará clasificar o
descifrar la información por sí solo.
Un ejemplo en el que se usa es para agrupar la información recolectada sobre usuarios en una Web o en una app y que nuestra
Inteligencia detecte diversas características que tienen en común.
En el Aprendizaje por Refuerzo, Nuestro sistema será un «agente autónomo» que deberá explorar «un espacio» desconocido y
determinar las acciones a llevar a cabo mediante prueba y error. Creará la mejor estrategia posible (políticas) para obtener la
mayor recompensa posible en tiempo y forma. Las políticas definirán qué acciones tomar ante cada situación a la que se
enfrente.
Aprendizaje por
Refuerzo
Aprenderá por sí mismo obteniendo premios -recompensas- y penalidades la forma óptima para recorrer un camino, resolver
un puzzle o comportarse por ejemplo en el Pac Man o en el Flappy Bird.
MACHINE LEARNING
Avances en la
Inteligencia Artificial
AGENDA
1 EL ORIGEN
2 LA DEFINICION
3 TIPOS DE APRENDIZAJE
4 PAQUETERIA EN PYTHON
5 DESARROLLOS
6 CONCLUSION
El origen del
Machine Learning
• Se originó en la década de los 60.
- El razonamiento probabilístico
Deep Laearning
MUCHAS GRACIAS!!!!
Introducción a SpaCy
Contenido [mostrar]
La biblioteca spaCy es una de las bibliotecas NLP más populares junto con NLTK. La diferencia
básica entre las dos bibliotecas es el hecho de que NLTK contiene una amplia variedad de
algoritmos para resolver un problema, mientras que spaCy contiene solo uno, pero el mejor
algoritmo para resolver un problema.
NLTK se lanzó en 2001, mientras que spaCy es relativamente nuevo y se desarrolló en 2015. En
esta serie de artículos sobre PNL, nos ocuparemos principalmente de spaCy, debido a su
naturaleza de vanguardia. Sin embargo, también tocaremos NLTK cuando sea más fácil realizar
una tarea usando NLTK en lugar de spaCy.
Instalación de spaCy
Si usa el instalador de pip para instalar sus bibliotecas de Python, vaya a la línea de comando y
ejecute la siguiente declaración:
https://pharos.sh/python-para-pnl-tokenizacion-derivacion-y-lematizacion-con-la-biblioteca-spacy/ 1/16
15/3/22, 13:20 ᐉ Python para PNL: tokenización, derivación y lematización con la biblioteca SpaCy | Pharos
Una vez que descargue e instale spaCy, el siguiente paso es descargar el modelo de idioma.
Usaremos el modelo de idioma inglés. El modelo de lenguaje se utiliza para realizar una variedad
de tareas de PNL, que veremos en una sección posterior.
Funcionalidad básica
Antes de profundizar en las diferentes funciones de SpaCy, veamos brevemente cómo trabajar
con él.
import spacy
sp = spacy.load('en_core_web_sm')
En el script de arriba usamos el load función de la spacy biblioteca para cargar el modelo
básico del idioma inglés. El modelo se almacena en el sp variable.
Creemos ahora un pequeño documento usando este modelo. Un documento puede ser una
oración o un grupo de oraciones y puede tener una extensión ilimitada. La siguiente secuencia
de comandos crea un documento spaCy simple.
Una ficha simplemente se refiere a una parte individual de una oración que tiene algún valor
https://pharos.sh/python-para-pnl-tokenizacion-derivacion-y-lematizacion-con-la-biblioteca-spacy/ 2/16
15/3/22, 13:20 ᐉ Python para PNL: tokenización, derivación y lematización con la biblioteca SpaCy | Pharos
Una ficha simplemente se refiere a una parte individual de una oración que tiene algún valor
semántico. Veamos qué tokens tenemos en nuestro documento:
print(word.text)
Manchester
United
is
looking
to
sign
forward
for
90
million
Puede ver que tenemos los siguientes tokens en nuestro documento. También podemos ver el
partes de la oración de cada uno de estos tokens usando el .pos_ atributo que se muestra a
continuación:
print(word.text, word.pos_)
Salida:
Manchester PROPN
United PROPN
is VERB
looking VERB
to PART
https://pharos.sh/python-para-pnl-tokenizacion-derivacion-y-lematizacion-con-la-biblioteca-spacy/ 3/16
15/3/22, 13:20 ᐉ Python para PNL: tokenización, derivación y lematización con la biblioteca SpaCy | Pharos
to PART
sign VERB
a DET
forward NOUN
for ADP
$ SYM
90 NUM
million NUM
Puede ver que a cada palabra o símbolo de nuestra oración se le ha asignado una parte del
discurso. Por ejemplo, «Manchester» ha sido etiquetado como un nombre propio, «Looking» ha
sido etiquetado como un verbo, y así sucesivamente.
Finalmente, además de las partes del discurso, también podemos ver las dependencias.
La salida se ve así:
is VERB aux
to PART aux
https://pharos.sh/python-para-pnl-tokenizacion-derivacion-y-lematizacion-con-la-biblioteca-spacy/ 4/16
15/3/22, 13:20 ᐉ Python para PNL: tokenización, derivación y lematización con la biblioteca SpaCy | Pharos
. PUNCT punct
En la salida, puede ver que spaCy es lo suficientemente inteligente como para encontrar la
dependencia entre los tokens, por ejemplo, en la oración teníamos una palabra is'nt . El
analizador de dependencias lo ha dividido en dos palabras y especifica que el n't es en
realidad la negación de la palabra anterior.
Para obtener una comprensión detallada del análisis de dependencias, consulte Este artículo.
document = sp(u'Hello from Pharos.sh. The site with the best Python Tutorials.
print(sentence)
También puede verificar si una oración comienza con un token en particular o no. Puede obtener
tokens individuales usando un índice y los corchetes, como una matriz:
document[4]
https://pharos.sh/python-para-pnl-tokenizacion-derivacion-y-lematizacion-con-la-biblioteca-spacy/ 5/16
15/3/22, 13:20 ᐉ Python para PNL: tokenización, derivación y lematización con la biblioteca SpaCy | Pharos
The
Ahora para ver si alguna oración en el documento comienza con The , podemos usar el
is_sent_start atributo como se muestra a continuación:
document[4].is_sent_start
En la salida, verá True desde el token The se utiliza al comienzo de la segunda oración.
En esta sección, vimos algunas operaciones básicas de la biblioteca spaCy. Ahora profundicemos
y veamos la tokenización, la derivación y la lematización en detalle.
Tokenización
print(sentence3)
Puede ver que la oración contiene comillas al principio y al final. También contiene signos de
puntuación en las abreviaturas «Reino Unido» y «EE. UU.»
print(word.text)
Salida:
"
They
're
https://pharos.sh/python-para-pnl-tokenizacion-derivacion-y-lematizacion-con-la-biblioteca-spacy/ 6/16
15/3/22, 13:20 ᐉ Python para PNL: tokenización, derivación y lematización con la biblioteca SpaCy | Pharos
leaving
U.K.
for
U.S.A.
"
En la salida, puede ver que spaCy ha tokenizado las comillas dobles inicial y final. Sin embargo, es
lo suficientemente inteligente como para no simbolizar el punto de puntuación utilizado entre
las abreviaturas como Reino Unido y EE. UU.
[email protected]")
print(sentence4)
print(word.text)
Salida:
Hello
am
non
vegetarian
me
https://pharos.sh/python-para-pnl-tokenizacion-derivacion-y-lematizacion-con-la-biblioteca-spacy/ 7/16
15/3/22, 13:20 ᐉ Python para PNL: tokenización, derivación y lematización con la biblioteca SpaCy | Pharos
e
the
menu
at
[email protected]
Es evidente por el resultado que spaCy fue capaz de detectar el correo electrónico y no lo
tokenizó a pesar de tener un «-«. Por otro lado, la palabra «no vegetariano» fue tokenizada.
len(sentence4)
Detectando Entidades
Además de convertir los documentos en palabras, también puede encontrar si la palabra es una
entidad como una empresa, lugar, edificio, moneda, institución, etc.
million')
print(word.text)
Salida:
Manchester
United
is
https://pharos.sh/python-para-pnl-tokenizacion-derivacion-y-lematizacion-con-la-biblioteca-spacy/ 8/16
15/3/22, 13:20 ᐉ Python para PNL: tokenización, derivación y lematización con la biblioteca SpaCy | Pharos
looking
to
sign
Harry
Kane
for
90
million
Sabemos que «Manchester United» es una sola palabra, por lo tanto, no debe dividirse en dos
palabras. De manera similar, «Harry Kane» es el nombre de una persona y «$ 90 millones» es un
valor monetario. Estos tampoco deben ser tokenizados.
Aquí es donde reconocimiento de entidad nombrada viene a jugar. Para obtener las entidades
nombradas de un documento, debe usar el ents atributo. Recuperemos las entidades
nombradas de la oración anterior. Ejecute el siguiente script:
str(spacy.explain(entity.label_)))
Salida:
Puede ver que el reconocedor de entidades con nombre de spaCy ha reconocido con éxito al
«Manchester United» como organización, a «Harry Kane» como persona y «$ 90 millones» como
valor monetario.
https://pharos.sh/python-para-pnl-tokenizacion-derivacion-y-lematizacion-con-la-biblioteca-spacy/ 9/16
15/3/22, 13:20 ᐉ Python para PNL: tokenización, derivación y lematización con la biblioteca SpaCy | Pharos
Detectar sustantivos
Además de detectar entidades con nombre, también se pueden detectar sustantivos. Para
hacerlo, el noun_chunks se utiliza el atributo. Considere la siguiente oración:
print(noun.text)
Salida:
Latest Rumours
Manchester United
Harry Kane
En la salida, puede ver que un sustantivo también puede ser una entidad con nombre y viceversa.
Derivado
La raíz se refiere a reducir una palabra a su forma raíz. Mientras realiza tareas de procesamiento
del lenguaje natural, encontrará varios escenarios en los que encontrará diferentes palabras con
la misma raíz. Por ejemplo, computación, computación, computación, computación, etc. Es
posible que desee reducir las palabras a su forma raíz en aras de la uniformidad. Aquí es donde
entra en juego la derivación.
Puede resultarle sorprendente, pero spaCy no contiene ninguna función para derivar, ya que se
basa únicamente en la lematización. Por lo tanto, en esta sección usaremos NLTK para derivar.
Hay dos tipos de lematizadores en NLTK: Porter Stemmer y Levantadores de bolas de nieve.
Ambos se han implementado utilizando diferentes algoritmos.
Porter Stemmer
https://pharos.sh/python-para-pnl-tokenizacion-derivacion-y-lematizacion-con-la-biblioteca-spacy/ 10/16
15/3/22, 13:20 ᐉ Python para PNL: tokenización, derivación y lematización con la biblioteca SpaCy | Pharos
import nltk
stemmer = PorterStemmer()
Supongamos que tenemos la siguiente lista y queremos reducir estas palabras a la raíz:
La siguiente secuencia de comandos busca la raíz de las palabras de la lista utilizando porter
stemmer:
El resultado es el siguiente:
Puede ver que las 4 palabras se han reducido a «comput», que en realidad no es una palabra en
absoluto.
stemmer = SnowballStemmer(language="english")
En el guión anterior, usamos Snowball Stemmer para encontrar la raíz de las mismas 4 palabras
que usamos con Porter Stemmer. La salida se ve así:
Puedes ver que los resultados son los mismos. Todavía tenemos «comput» como raíz.
Nuevamente, esta palabra «comput» en realidad no es una palabra de diccionario.
Aquí es donde la lematización resulta útil. La lematización reduce la palabra a su raíz tal como
aparece en el diccionario. Las raíces devueltas a través de la lematización son palabras reales del
diccionario y están semánticamente completas a diferencia de las palabras devueltas por la raíz.
Lematización
Aunque no pudimos realizar la derivación con spaCy, podemos realizar la lematización usando
spaCy.
Para hacerlo, necesitamos usar el lemma_ atributo en el documento spaCy. Supongamos que
tenemos la siguiente oración:
https://pharos.sh/python-para-pnl-tokenizacion-derivacion-y-lematizacion-con-la-biblioteca-spacy/ 12/16
15/3/22, 13:20 ᐉ Python para PNL: tokenización, derivación y lematización con la biblioteca SpaCy | Pharos
Podemos encontrar las raíces de todas las palabras usando la lematización espacial de la
siguiente manera:
print(word.text, word.lemma_)
compute compute
computer computer
computed compute
computing computing
Puede ver que, a diferencia de las raíces donde la raíz que obtuvimos fue «comput», las raíces
que obtuvimos aquí son palabras reales en el diccionario.
La lematización convierte las palabras en la segunda o tercera forma a sus primeras variantes de
forma. Mira el siguiente ejemplo:
Salida:
A ===> a
been ===> be
, ===> ,
https://pharos.sh/python-para-pnl-tokenizacion-derivacion-y-lematizacion-con-la-biblioteca-spacy/ 13/16
15/3/22, 13:20 ᐉ Python para PNL: tokenización, derivación y lematización con la biblioteca SpaCy | Pharos
asking ===> ask
to ===> to
be ===> be
Puede ver claramente en el resultado que las palabras en la segunda y tercera forma, como
«escrito», «liberado», etc., se han convertido a la primera forma, es decir, «escribir» y «liberar».
Conclusión
Te puede interesar:
Python para PNL: Desarrollo de GUI en Tutorial para principiantes Regresión lineal en Python
generación de texto de Python con Tkinter: Parte 3 sobre la biblioteca Panda con Scikit-Learn
aprendizaje profundo con de Python
Keras
https://pharos.sh/python-para-pnl-tokenizacion-derivacion-y-lematizacion-con-la-biblioteca-spacy/ 14/16
15/3/22, 13:20 ᐉ Python para PNL: tokenización, derivación y lematización con la biblioteca SpaCy | Pharos
Keras
Cómo seleccionar Cómo iterar sobre filas en OpenGL avanzado en Python para PNL:
elementos aleatoriamente un marco de datos de Python con PyGame y Traducción automática
de una lista en Python Pandas PyOpenGL neuronal con Seq2Seq en
Keras
Etiquetas: python
Sobre mi
Ramiro de la Vega
Bienvenido a Pharos.sh
Buscar …
Últimos Post
4 increíbles aplicaciones de Android para descargar vídeos de YouTube
Etiquetas
administración
algoritmos
angular
apache
api
base de datos
camuflaje
configure
código de ejemplo
Código de muestra
cómo
django
docker
entrevista
explicado
git
graphql
herramienta
incrustado
inteligencia artificial
intento
Java
javascript
Jenkins
json
linux
logstash
machine learning
margen
matplotlib
node
npm
phaser
python
revisión
Rápido
spring
sql
ssh
tensorflow
teoría
typescript
udemy
unix
vue
https://pharos.sh/python-para-pnl-tokenizacion-derivacion-y-lematizacion-con-la-biblioteca-spacy/ 16/16
15/3/22, 13:21 Tutorial: Quickstart — TextBlob 0.16.0 documentation
Tutorial: Quickstart
TextBlob aims to provide access to common text-processing operations through a familiar interface. You can treat
TextBlob objects as if they were Python strings that learned how to do Natural Language Processing.
Create a TextBlob
First, the import.
Part-of-speech Tagging ¶
Part-of-speech tags can be accessed through the tags property.
>>> wiki.tags
[('Python', 'NNP'), ('is', 'VBZ'), ('a', 'DT'), ('high-level', 'JJ'), ('general-purpose', 'JJ'), ('
>>> wiki.noun_phrases
WordList(['python'])
Sentiment Analysis
The sentiment property returns a namedtuple of the form Sentiment(polarity, subjectivity). The polar-
ity score is a float within the range [-1.0, 1.0]. The subjectivity is a float within the range [0.0, 1.0] where 0.0 is very ob-
jective and 1.0 is very subjective.
>>> testimonial.sentiment
Sentiment(polarity=0.39166666666666666, subjectivity=0.4357142857142857)
>>> testimonial.sentiment.polarity
0.39166666666666666
Tokenization
You can break TextBlobs into words or sentences.
>>> zen.words
WordList(['Beautiful', 'is', 'better', 'than', 'ugly', 'Explicit', 'is', 'better', 'than', 'implici
>>> zen.sentences
v: dev
https://textblob.readthedocs.io/en/dev/quickstart.html#create-a-textblob 1/5
15/3/22, 13:21 Tutorial: Quickstart — TextBlob 0.16.0 documentation
... print(sentence.sentiment)
>>> sentence.words
>>> sentence.words[2].singularize()
'space'
>>> sentence.words[-1].pluralize()
'levels'
>>> w = Word("octopi")
>>> w.lemmatize()
'octopus'
>>> w = Word("went")
'go'
WordNet Integration
You can access the synsets for a Word via the synsets property or the get_synsets method, optionally passing in a
part of speech.
>>> word.synsets
[Synset('octopus.n.01'), Synset('octopus.n.02')]
>>> Word("hack").get_synsets(pos=VERB)
You can access the definitions for each synset via the definitions property or the define() method, which can
also take an optional part-of-speech argument.
>>> Word("octopus").definitions
['tentacles of octopus prepared as food', 'bottom-living cephalopod having a soft oval body with ei
>>> octopus.path_similarity(shrimp)
0.1111111111111111
For more information on the WordNet API, see the NLTK documentation on the Wordnet Interface.
v: dev
WordLists
https://textblob.readthedocs.io/en/dev/quickstart.html#create-a-textblob 2/5
15/3/22, 13:21 Tutorial: Quickstart — TextBlob 0.16.0 documentation
>>> animals.words
>>> animals.words.pluralize()
Spelling Correction
Use the correct() method to attempt spelling correction.
>>> print(b.correct())
Word objects have a spellcheck() Word.spellcheck() method that returns a list of (word, confidence)
tuples with spelling suggestions.
>>> w = Word('falibility')
>>> w.spellcheck()
[('fallibility', 1.0)]
Spelling correction is based on Peter Norvig’s “How to Write a Spelling Corrector”[1] as implemented in the pattern li-
brary. It is about 70% accurate [2].
>>> monty = TextBlob("We are no longer the Knights who say Ni. "
... "We are now the Knights who say Ekki ekki ekki PTANG.")
>>> monty.word_counts['ekki']
If you access the frequencies this way, the search will not be case sensitive, and words that are not found will have a fre-
quency of 0.
>>> monty.words.count('ekki')
You can specify whether or not the search should be case-sensitive (default is False).
>>> wiki.noun_phrases.count('python')
Parsing
v: dev
https://textblob.readthedocs.io/en/dev/quickstart.html#create-a-textblob 3/5
15/3/22, 13:21 Tutorial: Quickstart — TextBlob 0.16.0 documentation
>>> print(b.parse())
>>> zen[0:19]
TextBlob("Beautiful is better")
>>> zen.upper()
TextBlob("BEAUTIFUL IS BETTER THAN UGLY. EXPLICIT IS BETTER THAN IMPLICIT. SIMPLE IS BETTER THAN CO
>>> zen.find("Simple")
65
True
True
n-grams
The TextBlob.ngrams() method returns a list of tuples of n successive words.
>>> blob.ngrams(n=3)
... print(s)
https://textblob.readthedocs.io/en/dev/quickstart.html#create-a-textblob 4/5
15/3/22, 13:21 Tutorial: Quickstart — TextBlob 0.16.0 documentation
Next Steps
Want to build your own text classification system? Check out the Classifiers Tutorial.
Want to use a different POS tagger or noun phrase chunker implementation? Check out the Advanced Usage guide.
[1] http://norvig.com/spell-correct.html
[2] http://www.clips.ua.ac.be/pages/pattern-en#spelling
[3] http://www.clips.ua.ac.be/pages/pattern-en#parser
v: dev
https://textblob.readthedocs.io/en/dev/quickstart.html#create-a-textblob 5/5
3.1.1. Librerías y Paquetes de Python
3.2. Leer un Dataset
#Use to import pandas
import pandas as pd
Cargar un .csv #Use to import the file into google Colab drive
desde colab de from google.colab import files
uploaded = files.upload()
# Now use the below code to read the csv in pandas' dataframe
# df = pd.read_csv(io.StringIO(uploaded[‘f.csv'].decode('utf-8')))
df = pd.read_csv('equiposF.csv’,sep=‘,’,header=0)
print(df)
print(df.head())
print(df.ix[0:3])
print(df[‘Nombre’])
3.2. Leer un Dataset
#En Visual Studio Code: aquí se pone la ruta de la capeta de donde esta el .csv a
Cargar .csv desde leerse.
#En Jupyter: aquí se pone la ruta de la capeta de donde esta el .csv a leerse.
import pandas as pd
df = pd.read_csv('E:/CICLO-2/IA/pandas/data.csv', index_col=0)
print(df)
4.2.3 Regresión Lineal
Cinco pasos básicos para implementar la regresión lineal
La idea es que esa función hallada a futuro sea capaz de reconocer cualquier entrada nueva que llegue.
En el Aprendizaje Supervisado los datos para el
4.2. Aprendizaje Supervisado entrenamiento incluyen la solución deseada, llamada
«etiquetas» (labels).
Dataset
Característica Etiqueta
Área(m^2) Precio
234 600
C 125 500 Como se lo hace ?
a 421 200
s 250 500
a 320 600
s 431 700
520 800
modelo paramétrico
4.2. Aprendizaje Supervisado