UD01 · Notebook 1 — Técnicas de IA en acción¶
Este notebook muestra en código las técnicas básicas de la IA (RA1-c) y cómo se relacionan con la mejora de la eficiencia operativa (RA1-d). Usa únicamente numpy, pandas y scikit-learn.
Objetivos¶
- Ver un ejemplo de aprendizaje supervisado (clasificación).
- Ver un ejemplo de aprendizaje no supervisado (segmentación).
- Ver un ejemplo de PLN básico (análisis de opiniones).
- Ver un ejemplo de sistema experto con reglas.
- Pensar qué técnica usarías en cada caso de negocio.
import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
from sklearn.cluster import KMeans
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
np.random.seed(42)
print("Bibliotecas cargadas")
1. Aprendizaje supervisado: ¿reclamará este cliente?¶
Una empresa quiere anticipar qué clientes van a reclamar, para priorizar su atención (menos tiempo, menos coste). Entrenamos un clasificador con datos etiquetados.
X = np.array([[1, 2], [2, 1], [4, 4], [5, 6], [1, 5], [6, 4]])
y = np.array([0, 0, 1, 1, 0, 1]) # 1 = reclamará
modelo = KNeighborsClassifier(n_neighbors=3)
modelo.fit(X, y)
print("Predicción cliente (2.0, 3.0):", modelo.predict([[2.0, 3.0]])[0])
print("Predicción cliente (5.0, 5.0):", modelo.predict([[5.0, 5.0]])[0])
2. Aprendizaje no supervisado: segmentar clientes¶
Sin etiquetas, k-means agrupa clientes por comportamiento para personalizar ofertas (menos coste de marketing, más ventas).
compras = np.array([[30, 2], [32, 3], [31, 2], [80, 9], [85, 10], [82, 8]])
km = KMeans(n_clusters=2, n_init=10, random_state=42)
etiquetas = km.fit_predict(compras)
df = pd.DataFrame({"importe": compras[:, 0], "pedidos": compras[:, 1], "segmento": etiquetas})
df
3. PLN básico: analizar opiniones¶
Convertimos texto en números (bolsa de palabras) y entrenamos un clasificador de sentimiento. Es el tipo de IA que usa un comercio para medir la satisfacción.
textos = [
"el envío llegó rápido y perfecto",
"me encanta la calidad de este producto",
"el pedido tardó muchísimo",
"producto roto y sin reembolso",
]
opinion = [1, 1, 0, 0]
vector = CountVectorizer()
X_bow = vector.fit_transform(textos)
nb = MultinomialNB()
nb.fit(X_bow, opinion)
frase = ["llega rápido y bien embalado"]
pred = nb.predict(vector.transform(frase))[0]
print("Sentimiento de la opinión:", "positivo" if pred else "negativo")
4. Sistema experto con reglas¶
Un sistema experto codifica el conocimiento de un experto en forma de reglas si... entonces.... Ejemplo: recomendar un plan de soporte según el perfil del cliente.
def recomendar_plan(ventas, reclamaciones):
if ventas > 100 and reclamaciones < 5:
return "VIP"
if ventas > 50:
return "Premium"
if reclamaciones > 10:
return "Atención especial"
return "Estándar"
for ventas, reclam in [(150, 2), (70, 4), (30, 12), (10, 1)]:
print(f"ventas={ventas:>3}, reclamaciones={reclam:>2} -> {recomendar_plan(ventas, reclam)}")
5. Actividad¶
Responde en celdas Markdown:
- ¿Qué técnica usarías para detectar fraudes en tarjetas (datos históricos etiquetados)?
- ¿Y para agrupar tiendas por volumen de ventas sin etiquetas?
- Elige un proceso de tu entorno (clase, centro, trabajo) y propón una interacción nueva (chatbot, voz, visión) que mejore su eficiencia operativa: indica qué técnica de las vistas usaría.
Guarda el notebook con tus respuestas y entrégalo en Moodle como parte de la tarea RA1.
print("Fin del notebook UD01")