Problema: Predecir si un cliente comprará un producto en particular basándose en sus características demográficas y de comportamiento.
Datos:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# Crear un DataFrame
data = {
'edad': [25, 35, 45, 28, 32],
'genero': ['M', 'F', 'M', 'F', 'M'],
'ingreso': [50000, 65000, 70000, 55000, 60000],
'educacion': ['medio', 'superior', 'superior', 'básico', 'medio'],
'compras_anteriores': [5, 8, 12, 3, 7],
'compra': [1, 0, 1, 0, 1]
}
df = pd.DataFrame(data)
# Codificar variables categóricas
le = LabelEncoder()
df['genero'] = le.fit_transform(df['genero'])
df['educacion'] = le.fit_transform(df['educacion'])
# Separar características y variable objetivo
X = df[['edad', 'genero', 'ingreso', 'educacion', 'compras_anteriores']]
y = df['compra']
# Dividir los datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Crear y entrenar el modelo KNN
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# Hacer predicciones
y_pred = knn.predict(X_test)
# Evaluar el modelo
accuracy = accuracy_score(y_test, y_pred)
print("Precisión:", accuracy)
LabelEncoder
para convertir las variables categóricas (género y educación) en valores numéricos que el modelo pueda entender.En este ejemplo, estamos utilizando el algoritmo KNN para clasificar a los clientes en dos categorías: aquellos que comprarán el producto y aquellos que no.