es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comportamiento inesperado de la regresión logística en ML.

Soy nuevo en IA y ML, así que disculpa si esta es una pregunta estúpida.
Estaba leyendo sobre Regresión Logística y descubrí que es un modelo de ML supervisado para clasificación.

Así que intenté codificar un ejemplo para probarlo. Mi idea era ver si el programa podía descubrir la “regla” detrás de la etiqueta (Y) que establecí, que es “Y = 1 si y solo si X1 O X2 es múltiplo de 3 pero no ambos, 0 en otro caso”.

Pero como puedes ver, la precisión es muy baja. ¿Estoy haciendo algo mal? ¿Malinterpreté el concepto de Regresión Logística?

CONJUNTO DE DATOS:

3,1,1
2,3,1
1,1,0
2,4,0
5,6,1
9,3,1
8,9,1
5,5,0
9,9,0
5,7,0
3,3,0
5,3,1
2,4,0
7,7,0
4,9,1
7,3,1
6,2,1
8,1,0
6,4,0
9,4,1

CÓDIGO:

from sklearn.linear_model import LogisticRegression
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn import metrics
col_names = ['x1', 'x2', 'y']
multi3 = pd.read_csv("1.csv", header=None, names=col_names)
feature_cols = ['x1', 'x2']
X = multi3[feature_cols]
y = multi3.y

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
logreg = LogisticRegression()
logreg.fit(X_train, y_train)

y_pred = logreg.predict(X_test)
cnf_matrix = metrics.confusion_matrix(y_test, y_pred)
print(cnf_matrix)
print("Precisión:", metrics.accuracy_score(y_test, y_pred))
print("Precisión:", metrics.precision_score(y_test, y_pred))
print("Recall:", metrics.recall_score(y_test, y_pred))

SALIDA:

[[1 2]
 [1 1]]
Precisión: 0.4
Precisión: 0.3333333333333333
Recall: 0.5

EDICIÓN:
Código fuente de mi comentario anterior.

Imagen del código fuente:
WORKING EXAMPLE

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La Regresión Logística es un algoritmo poderoso utilizado en el campo del Aprendizaje Automático para problemas de clasificación. Se basa en el concepto de probabilidad y utiliza una función sigmoide para asignar valores a una puntuación de probabilidad entre 0 y 1. La etiqueta predicha se basa en el valor umbral de probabilidad establecido por el usuario.

    En tu caso, has comprendido correctamente que la Regresión Logística es un modelo de clasificación. Tu idea de probar el modelo con la regla proporcionada es buena, pero la baja puntuación de precisión sugiere que el modelo no es capaz de aprender la regla de manera efectiva. Puede haber varias razones para esto:

    1. Datos insuficientes: El conjunto de datos que has proporcionado es muy pequeño y la regla que estás intentando aprender es compleja. Un conjunto de datos más grande con muestras más diversas podría mejorar la precisión.
    2. Datos linealmente separables: La Regresión Logística asume que los datos son linealmente separables. Sin embargo, la regla que estás intentando aprender no es fácilmente separable con una línea. Por lo tanto, es posible que necesites un modelo no lineal más poderoso, como una red neuronal, para aprender la regla.

    3. Implementación incorrecta: Es posible que haya un error en la implementación del modelo, lo cual está causando un rendimiento deficiente. Sin embargo, según el código que has proporcionado, parece que está correcto.

    En general, tu comprensión de la Regresión Logística es correcta y tu enfoque para probar el modelo es válido. Sin embargo, la baja puntuación de precisión sugiere que puede haber limitaciones del modelo o del conjunto de datos.

Comments are closed.