Filtro de spam de regresión logística

Hagamos un filtro de spam usando regresión logística. Clasificaremos los mensajes como jamón o spam. El conjunto de datos que usaremos es el conjunto de datos SMSSpamCollection. El conjunto de datos contiene mensajes, que son spam o ham.

Aprende más de python con estos temas:

¿Qué es la regresión logística?

La regresión logística es un algoritmo de clasificación simple. Dado un ejemplo, tratamos de predecir la probabilidad de que pertenezca a la clase «0» o a la clase «1».

Recuerda que con la regresión lineal tratamos de predecir el valor de y(i) para x(i). Tal salida continua no es adecuada para la tarea de clasificación.

Dada la función logística y un ejemplo, siempre devuelve un valor entre uno y cero.

Grafiquemos los datos de esa función. Usaremos el rango :

Esto muestra una forma de S. La inversa de la función logística se llama función logit. Para que la correlación entre el predictor y la variable dependiente sea lineal, necesitamos hacer la transformación logit de la variable dependiente.

Logit = Log (p/1-p) = β 0 + β x

Ahora podemos aplicarlo a la tarea de clasificación binaria.

Código de filtro de spam

Cargamos el conjunto de datos usando pandas. Luego nos dividimos en un conjunto de entrenamiento y prueba. Extraemos características de texto conocidas como características TF-IDF, porque necesitamos trabajar con vectores numéricos.

Luego creamos el objeto de regresión logística y lo entrenamos con los datos. Finalmente creamos un conjunto de mensajes para hacer predicciones.

import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model.logistic import LogisticRegression
from sklearn.model_selection import train_test_split, cross_val_score

df = pd.read_csv('SMSSpamCollection', delimiter='t',header=None)

X_train_raw, X_test_raw, y_train, y_test = train_test_split(df[1],df[0])

vectorizer = TfidfVectorizer()
X_train = vectorizer.fit_transform(X_train_raw)
classifier = LogisticRegression()
classifier.fit(X_train, y_train)

X_test = vectorizer.transform( ['URGENT! Your Mobile No 1234 was awarded a Prize', 'Hey honey, whats up?'] )
predictions = classifier.predict(X_test)
print(predictions)

Te recomiendo mas entradas sobre Machine Learning:

Los algoritmos Support Vector Machine (SVM) fueron inventados por Vladimir Vapnik y Alexey Chervonenkis en 1963 y son capaces de ...
A un programador de IA se le paga para crear lenguajes de programación especializados utilizados para robótica y otros tipos ...
Este es el top 10 de empresas internacionales que utilizaron la combinación de estas dos tecnologías para mejorar su gestión ...
Los algoritmos de aprendizaje automático se pueden dividir en tres grandes categorías: aprendizaje supervisado, aprendizaje no supervisado y aprendizaje por ...
Diariamente me contactan personas que comparten su entusiasmo por sumergirse en el mundo de la ciencia de datos y utilizar ...
Me gusta este beneficio. Me costaría mucho dejarlo ir. Me iría por una semana de 3 días. Es una locura ...

¿ Te fue de valor esta entrada filtro de spam de regresión logística?
⬇️ Me ayudarías mucho si compartes esta entrada.⬇️

2 comentarios en «Filtro de spam de regresión logística»

  1. ¡Interesante tema! ¿Realmente funciona el filtro de spam de regresión logística? ¡Debate abierto!

  2. ¿La regresión logística es realmente efectiva en el filtro de spam? ¡Debate interesante!

Los comentarios están cerrados.