domingo, 14 de enero de 2024

Clasificación de Emails

 

Para desarrollar un script para clasificar correos electrónicos como spam o no spam, primero se necesita un dataset ficticio. Luego, se puede utilizar un algoritmo de clasificación en Python. Vamos a crear un ejemplo básico utilizando el algoritmo de Naive Bayes, que es comúnmente usado para la clasificación de spam.

Data set emails_ficticios.csv

Texto,Etiqueta

"¡Gana dinero fácilmente en el colegio!",1

"Reunión de trabajo el próximo viernes",0

"Oferta única: ¡compra tres y llévate uno y medio gratis!",1

"Recordatorio: presentación de facturas",0

"¿Quieres bajar de peso en 10 dias? Descubre cómo",1

"Invitación: final futbol de la copa tigo",0

"Renueva tu suscripción al GYM a un precio especial",1

"Informe de actividades trimestral",0

"Obtén un iPhone nuevo a mitad de precio",1

"Información sobre el curso de diplomado en IA",0

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics import accuracy_score

# Cargar datos
datos = pd.read_csv('emails_ficticios.csv')

# Preprocesamiento
vectorizador = CountVectorizer()
X = vectorizador.fit_transform(datos['Texto'])
y = datos['Etiqueta']

# Dividir el dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Entrenar el modelo
modelo = MultinomialNB()
modelo.fit(X_train, y_train)

# Evaluar el modelo
y_pred = modelo.predict(X_test)
print("Precisión:", accuracy_score(y_test, y_pred))

Precisión: 1.0
.
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics import accuracy_score

# Cargar datos
datos = pd.read_csv('emails_ficticios.csv')

# Preprocesamiento
vectorizador = CountVectorizer()
X = vectorizador.fit_transform(datos['Texto'])
y = datos['Etiqueta']

# Dividir el dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Entrenar el modelo
modelo = MultinomialNB()
modelo.fit(X_train, y_train)

# Función para predecir si un email es spam
def predecir_spam(texto_email):
    texto_transformado = vectorizador.transform([texto_email])
    prediccion = modelo.predict(texto_transformado)
    return "Spam" if prediccion[0] == 1 else "No Spam"

# Prueba con un email de ejemplo
email_de_prueba = "Reunión de trabajo el próximo viernes"
resultado = predecir_spam(email_de_prueba)
print(f"El email '{email_de_prueba}' es clasificado como: {resultado}")

El email 'Reunión de trabajo el próximo viernes' es clasificado como: No Spam

# Cargar datos
datos = pd.read_csv('emails_ficticios.csv')

# Preprocesamiento
vectorizador = CountVectorizer()
X = vectorizador.fit_transform(datos['Texto'])
y = datos['Etiqueta']

# Dividir el dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Entrenar el modelo
modelo = MultinomialNB()
modelo.fit(X_train, y_train)

# Función para predecir si un email es spam
def predecir_spam(texto_email):
    texto_transformado = vectorizador.transform([texto_email])
    prediccion = modelo.predict(texto_transformado)
    return "Spam" if prediccion[0] == 1 else "Spam"

# Prueba con un email de ejemplo
email_de_prueba = "Obtén un iPhone nuevo a mitad de precio"
resultado = predecir_spam(email_de_prueba)
print(f"El email '{email_de_prueba}' es clasificado como: {resultado}")

El email 'Obtén un iPhone nuevo a mitad de precio' es clasificado como: Spam

No hay comentarios:

Publicar un comentario

Aplicación Práctica: Regresión Logística (Aprendizaje Supervisado)

  Definicion.-   La regresión logística es un método estadístico utilizado para modelar la probabilidad de que una variable dependiente bina...