Este proyecto te permitirá trabajar tanto en la creación de un asistente inteligente como en la implementación de un sistema de recomendación que puede mejorar la experiencia de compra en una tienda en línea.
El objetivo de este proyecto es crear un asistente virtual que interactúe con los clientes de una tienda en línea y un sistema de recomendación personalizado que sugiera productos basados en el historial de navegación y compras. El asistente virtual debe ser capaz de resolver preguntas comunes, ofrecer información sobre productos y ayudar en el proceso de compra. El sistema de recomendación, por su parte, debe sugerir productos a los clientes en función de sus interacciones previas en la tienda.
Aunque el proyecto lo vas a realizar de manera individual, es importante estructurarlo de forma ordenada. El proceso se puede dividir en dos partes principales:
user_id
: Identificador único del usuario.product_id
: Identificador único del producto.view_count
: Cantidad de veces que un producto fue visto.purchase_count
: Cantidad de veces que un producto fue comprado.import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
# Crear un conjunto de datos ficticio
data = {
'user_id': [1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
'product_id': [101, 102, 103, 104, 105, 101, 102, 103, 104, 105],
'view_count': [5, 3, 2, 6, 4, 1, 2, 3, 4, 5],
'purchase_count': [1, 0, 0, 1, 0, 1, 0, 0, 1, 0]
}
df = pd.DataFrame(data)
# Preparar los datos para el modelo
X = df[['user_id', 'product_id', 'view_count']]
y = df['purchase_count']
# División de los datos
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Implementación del modelo de Random Forests
rnd_clf = RandomForestClassifier(n_estimators=100, random_state=42)
rnd_clf.fit(X_train, y_train)
y_pred = rnd_clf.predict(X_test)
# Evaluación del modelo
print("Random Forests Accuracy:", accuracy_score(y_test, y_pred))
print("Confusion Matrix:\n", confusion_matrix(y_test, y_pred))
Este código entrena un modelo de Random Forest para predecir la probabilidad de compra de un producto basado en las interacciones previas de un usuario.
Saludos. Tomando como punto de partida el siguiente proyecto, Quiero algo fácil de implementar con código abierto o desarrollo propio. Es importante que me brindes todo lo requerido para realizar el proyecto en un taller de Introducción básica al ML y a la IA con chatbots inteligentes.
# Proyecto: Crear un asistente virtual que interactúe con los clientes de una tienda en línea y un sistema de recomendación personalizado que sugiera productos basados en el historial de navegación y compras. El asistente virtual debe ser capaz de resolver preguntas comunes, ofrecer información sobre productos y ayudar en el proceso de compra.
## Objetivos del proyecto:
- Descripción del diseño y flujo de interacción del asistente virtual.
- Explicación del sistema de recomendación.
- Proceso de implementación y herramientas utilizadas.
- Demostración del asistente virtual y sistema de recomendación en funcionamiento.
- Conclusiones y recomendaciones para futuras mejoras.
## Herramientas
- Google Colab
- Visual Studio Code o Sublime Text
- Cualquier otra requerida, en lo posible de la nube para realizar implementación final para entrega del proyecto.
## Código de Ejemplo para el Sistema de Recomendación:
Debes usar como punto de partida el código de ejemplo que dan con el Proyecto:
---
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt
# Crear un conjunto de datos ficticio con más características
data = {
'user_id': [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'product_id': [101, 102, 103, 104, 105, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110],
'view_count': [5, 3, 2, 6, 4, 1, 2, 3, 4, 5, 8, 2, 1, 7, 6],
'purchase_count': [1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0],
'price': [19.99, 59.99, 29.99, 39.99, 89.99, 19.99, 59.99, 29.99, 39.99, 89.99, 25.99, 50.99, 29.99, 20.99, 34.99],
'rating': [4.5, 4.7, 4.3, 4.8, 4.6, 4.2, 4.4, 4.1, 4.9, 4.3, 4.2, 4.5, 4.6, 4.0, 4.1]
}
---
Hagamos algo grandioso!!!
1. Paso 1: Hoja de ruta y tecnologías a usar de forma muy operativa
2. Iniciar
Saludos. Tomando como punto de partida el siguiente proyecto, Quiero algo fácil de implementar con código abierto o desarrollo propio. Es importante que me brindes todo lo requerido para realizar el proyecto en un taller de Introducción básica al ML y a la IA con chatbots inteligentes.
# Proyecto: Crear un asistente virtual que interactúe con los clientes de una tienda en línea y un sistema de recomendación personalizado que sugiera productos basados en el historial de navegación y compras. El asistente virtual debe ser capaz de resolver preguntas comunes, ofrecer información sobre productos y ayudar en el proceso de compra.
## Objetivos del proyecto:
- Descripción del diseño y flujo de interacción del asistente virtual.
- Explicación del sistema de recomendación.
- Proceso de implementación y herramientas utilizadas.
- Demostración del asistente virtual y sistema de recomendación en funcionamiento.
- Conclusiones y recomendaciones para futuras mejoras.
## Herramientas
- Google Colab
- Visual Studio Code o Sublime Text
- Cualquier otra requerida, en lo posible de la nube para realizar implementación final para entrega del proyecto.
## Código de Ejemplo para el Sistema de Recomendación:
Debes usar como punto de partida el código de ejemplo que dan con el Proyecto:
<ejemplo>
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt
# Crear un conjunto de datos ficticio con más características
data = {
'user_id': [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'product_id': [101, 102, 103, 104, 105, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110],
'view_count': [5, 3, 2, 6, 4, 1, 2, 3, 4, 5, 8, 2, 1, 7, 6],
'purchase_count': [1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0],
'price': [19.99, 59.99, 29.99, 39.99, 89.99, 19.99, 59.99, 29.99, 39.99, 89.99, 25.99, 50.99, 29.99, 20.99, 34.99],
'rating': [4.5, 4.7, 4.3, 4.8, 4.6, 4.2, 4.4, 4.1, 4.9, 4.3, 4.2, 4.5, 4.6, 4.0, 4.1]
}
# Agregar una columna de categoría de productos
categories = ['Electrónica', 'Ropa', 'Hogar', 'Calzado', 'Electrónica', 'Ropa', 'Calzado', 'Hogar', 'Accesorios', 'Accesorios', 'Deportes', 'Deportes', 'Accesorios', 'Ropa', 'Electrónica']
data['category'] = categories
# Convertir a DataFrame
df = pd.DataFrame(data)
# Convertir la columna 'category' en variables dummy (One-Hot Encoding)
df = pd.get_dummies(df, columns=['category'], drop_first=True)
# Mostrar el DataFrame con las nuevas columnas generadas por One-Hot Encoding
print(df.head())
# Seleccionar las características (features) y la variable objetivo (target)
X = df.drop('purchase_count', axis=1) # Todas las columnas excepto 'purchase_count'
y = df['purchase_count'] # Variable objetivo: purchase_count (queremos predecir las compras)
# Dividir los datos en conjunto de entrenamiento (80%) y conjunto de prueba (20%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Crear un modelo de Random Forest con los mismos parámetros
model = RandomForestClassifier(n_estimators=150, max_depth=5, random_state=42)
# Entrenar el modelo con los datos de entrenamiento
model.fit(X_train, y_train)
# Realizar predicciones con el conjunto de prueba
y_pred = model.predict(X_test)
# Calcular la precisión del modelo
accuracy = accuracy_score(y_test, y_pred)
print(f'Precisión del modelo con nueva característica: {accuracy}')
# Mostrar la matriz de confusión
conf_matrix = confusion_matrix(y_test, y_pred)
print("Matriz de confusión (con nueva característica):")
print(conf_matrix)
# Mostrar las predicciones realizadas por el modelo
print("Predicciones del modelo:", y_pred)
# Graficar la matriz de confusión
plt.figure(figsize=(6, 4))
sns.heatmap(conf_matrix, annot=True, fmt="d", cmap="Blues", xticklabels=['No Comprado', 'Comprado'], yticklabels=['No Comprado', 'Comprado'])
plt.title('Matriz de Confusión')
plt.xlabel('Predicción')
plt.ylabel('Realidad')
plt.show()
</ejemplo>
Hagamos algo grandioso!!!
1. Paso 1: Hoja de ruta y tecnologías a usar de forma muy operativa
Instalación de Rasa:
pip install rasa
.Definir los Intents y Respuestas: En Rasa, los "intents" son los objetivos o intenciones que el usuario puede tener. Por ejemplo:
version: "2.0"
nlu:
- intent: greet
examples: |
- Hola
- Buenos días
- ¡Hola, cómo estás!
- intent: inquire_products
examples: |
- ¿Tienes zapatos?
- Muéstrame productos deportivos
responses:
utter_greet:
- text: "¡Hola! ¿En qué puedo ayudarte hoy?"
utter_inquire_products:
- text: "Tenemos una gran variedad de zapatos deportivos y casuales. ¿Qué tipo te interesa?"
rasa train
rasa shell
Integración del Asistente Virtual:
Pruebas del Sistema de Recomendación: