Blogs de Reseñas, Guías Prácticas, Noticias de Móviles

Una guía para principiantes sobre la regresión logística en Python

Nota: El próximo artículo lo va a ayudar con: Una guía para principiantes sobre la regresión logística en Python

La mayor parte de los inconvenientes de estudio supervisado en la educación automático son problemas de clasificación.

La clasificación es la tarea de asignar una clase correcta a un punto de datos.

Pongamos que poseemos un inconveniente con la clasificación de mascotas.

Si ingresamos rasgos concretos, el modelo de aprendizaje automático nos afirmará si los aspectos forman parte a un gato o un perro.

El gato y el perro son dos clases aquí.

Uno se puede representar numéricamente por 0 y el otro por 1.

Esto lleva por nombre particularmente el inconveniente de clasificación binaria.

Si hay mucho más de dos clases, el problema se llama inconveniente de clasificación multiclase.

Esta labor de aprendizaje automático está sujeta a aprendizaje supervisado, ahora que las especificaciones como su clase correspondiente se dan como entrada al modelo a lo largo del entrenamiento.

Durante las pruebas o la producción, el modelo predice un nivel dadas las especificaciones de un punto de datos.

Este producto cubre la regresión logística y las matemáticas detrás de ella con un ejemplo práctico y códigos de Python.

La regresión logística pertence a los algoritmos básicos de clasificación.

La regresión logística está diseñada solo para inconvenientes de clasificación binaria.

No obstante, la clasificación multiclase asimismo se puede realizar con este algoritmo con ciertas ediciones.

Definir un problema de clasificación binaria

Cree el ambiente importando las bibliotecas y módulos precisos.

importar numpy como np importar pandas como pd importar matplotlib.pyplot como plt importar seaborn como sns de sklearn.datasets importar load_breast_cancer de sklearn.model_selection importar train_test_split de sklearn importar métricas sns.set_style(‘darkgrid’)

Cargue un problema de clasificación binaria desde los conjuntos de datos integrados de SciKit-Learn.

Los datos de cáncer de mama son un problema de clasificación binaria con 2 clases.

Obtenga los datos y metadatos con el siguiente código.

raw_data = cargar_cáncer_de_mama() raw_data.keys()

Salida:

Tenemos la posibilidad de leer mucho más sobre los datos cargados empleando el fichero DESCR.

imprimir (fecha_sin procesar[‘DESCR’])

Parte de salida:

El grupo de datos tiene dentro 30 elementos y un propósito.

La meta tiene dos clases: malvado (condición cancerosa) y benigno (condición no cancerosa).

Cree un marco de datos de pandas para la función y una serie de pandas para el objetivo.

data = pd.DataFrame(raw_data[‘data’]columnas=datos_sin procesar[‘feature_names’]) propósito = pd.Series(raw_data[‘target’]nombre=”propósito”)

En labras de la claridad, solo cubriremos cinco peculiaridades escogidas.

caracteristicas = [‘mean radius’, ‘mean texture’, ‘mean smoothness’, ‘mean compactness’, ‘mean concavity’]X = datos[features]y = destino.copia() X.cabeza()

Salida:

X tiene todas y cada una de las características e y tiene el propósito.

Si modeláramos con todos y cada uno de los datos disponibles, no podríamos evaluar nuestro modelo.

Por lo tanto, es obligación dividir los datos disponibles en conjuntos de entrenamiento y validación.

El conjunto de entrenamiento se utiliza para entrenar el modelo y el conjunto de validación se usará para valorar el modelo entrenado.

X_train, X_wal, y_train, y_value = train_test_split(X,y,test_size=0.2random_state=6)

El 80% de los datos disponibles se asigna de forma aleatoria al grupo de entrenamiento y el 20% restante al conjunto de validación.

El estado aleatorio contribuye a reproducir los resultados.

Las matemáticas detrás de la regresión logística

Antes de empezar a modelar y entrenar, debemos comprender los conceptos y las matemáticas tras el método de regresión logística.

Por norma general, en el momento en que hay un cambio despacio y continuo en una o mucho más funciones, un modelo de estudio automático genera un resultado que cambia regularmente.

Pero el inconveniente de clasificación binaria asimismo requiere salidas discretas de 0 o 1.

No existe un enfoque fácil para conseguir 0 o 1 como salida.

En este ámbito, la regresión logística incorpora una función matemática llamada Logit que contribuye a aproximar la salida a 0 o 1.

En otras expresiones, la regresión logística genera resultados continuos cuyos valores están entre 0 y 1, pero la mayor parte de ellos están cerca de los valores límite.

Logit es una función lineal que es igual a la salida del modelo de regresión lineal.

Es la suma aritmética de la suma ponderada de peculiaridades y desviación.

La desviación y los pesos también se nombran intersección y coeficientes, respectivamente.

Por poner un ejemplo, nuestros datos X tienen cinco características.

La función Logit se puede determinar como:

Cuando se calcula Logit, debe analizarse en una distribución de probabilidad que cambie la mayoría de los valores hacia 0 o 1.

Distribución de posibilidad,

Si el valor de P(y) es mayor que 0,5, la clase asignada al punto de datos es 1.

En caso contrario, si está bajo 0,5 la clase asignada es 0.

En consecuencia, la función lineal P(y) se convierte a la fuerza en valores discretos (y).

Regresión logística usando la biblioteca statsmodels

La regresión logística se puede realizar a través de la biblioteca SciKit-Learn o la biblioteca statsmodels.

No obstante, los conceptos matemáticos anteriores se tienen la posibilidad de explorar explícitamente con statsmodels.

from statsmodels.api import Logit, add_constant # agregar intercepción manualmente X_train_const = add_constant(X_train) # crear el modelo y cambiar los datos de entrenamiento model_1 = Logit(y_train, X_train_const).fit() # imprimir el resumen del modelo model_1.summary()

Salida (la información de utilidad está resaltada):

La desviación y los coeficientes de la función Logit se calculan a través de una regresión logit usando la estimación de máxima verosimilitud (MLE).

Los factores en el resultado anterior son desviación y cinco ponderaciones, respectivamente.

La distribución de probabilidad de la función logit para los datos de entrenamiento se puede conseguir y ver empleando los próximos códigos.

# Distribución de posibilidad para datos de entrenamiento prob_train = model_1.predict(X_train_const) # ordenar prob dist para visualización sorted_train = sorted(prob_train.values) index_train = np.arange(len(sorted_train)) # trazarlo plt.plot(index_train, sorted_train , ‘+r’) plt.title(‘Datos de entrenamiento: distribución de posibilidad’, tamaño=14, color=”naranja”) plt.xlabel(‘Ejemplos (ordenados por línea base)’) plt.ylabel(‘Función de posibilidad logit’ ) plt.mostrar()

Salida:

Apreciarás que los valores de posibilidad se acercan a 0 o 1.

La mayoría de los puntos están cerca de 0 o 1, mientras que ciertos puntos cambian de 0 a 1.

Además de esto, la transición de 0 a 1 es inmediata.

Asistencia al modelo a tomar decisiones con mucho más seguridad.

De manera predeterminada, 0,5 es el límite de decisión (o técnicamente llamado umbral).

Aun si este umbral se mueve ligeramente por encima o abajo, prácticamente ningún punto se clasificará de manera diferente.

Predigamos una distribución de posibilidad para los datos de validación y grafiquémosla.

# Distribución de probabilidad para datos de validación X_val_const = add_constant(X_val) prob_val = model_1.predict(X_val_const) # sorting prob dist for visualization sorted_val = sorted(prob_val.values) index_val = np.arange(len(sorted_val)) plt.plot( index_val , sorted_val, ‘+g’) plt.title(‘Datos de verificación: distribución de probabilidad’, size=14, color=”orange”) plt.xlabel(‘Ejemplos (ordenados por línea base)’) plt.ylabel(‘ Posibilidad Logit función’) plt.mostrar()

Salida:

Gracias a esta transición continua de valores pronosticados de 0 a 1, se le llama regresión logística pero no clasificación logística.

Clasifiquemos empleando una distribución de posibilidad.

Defina 0,5 como umbral y clasifique los puntos de datos como 0 o 1.

umbral = 0.5y_pred = (prob_val > umbral).astype(eg.int8)

Valore el modelo con una puntuación de precisión.

metrics.accuracy_score(y_val,y_pred)

Salida:

Un informe de clasificación es un procedimiento útil que otorga una puntuación basada en múltiples métricas en una manera fundamentada en clases.

Para conocer las distintas métricas de clasificación, puede preguntar este producto.

imprimir (metrics.classification_report (y_val, y_pred))

Salida:

La matriz de confusión puede darle mucho más información sobre eficacia.

conf = pd.DataFrame(metrics.confusion_matrix(y_val,y_pred), index=[‘Actual Malignant’, ‘Actual Benign’]columnas=[‘Predicted Malignant’, ‘Predicted Benign’]) charla

Salida:

Se aprecia que un total de 9 puntos de datos están mal clasificados entre 114.

Tenemos la posibilidad de probar de forma manual diferentes umbrales para comprobar el rendimiento del modelo.

precisión = []umbrales = p. ej., arange(0.0, 10.01, 0.05) para th en umbrales: y_preds = (prob_val > th).astype(np.int8) acc = metrics.accuracy_score(y_val,y_preds) accuracies.append(acc) # traza valores de precisión ​​plt.plot(umbrales, precisiones) , ‘*m’) plt.xlabel(‘Umbral’) plt.ylabel(‘Precisión’) plt.espectáculo()

Salida:

La visualización exhibe claramente que cambiar el valor del umbral no interfiere significativamente la precisión.

Cualquier valor de umbral entre 0,2 y 0,8 puede proporcionar una precisión superior al 90 %.

Además, el gráfico explota visto que la máxima precisión se consigue para un valor umbral de cerca de 0,7.

Empleo de la biblioteca SciKit-Learn

La regresión logística se efectúa con unas escasas líneas de código utilizando la biblioteca SciKit-Learn.

from sklearn.linear_model import LogisticRegression model_2 = LogisticRegression(kara=’none’) model_2.fit(X_train, y_train)

Valore el modelo con datos de verificación.

Infiere predicciones con X_train y calcula la precisión.

y_pred_2 = model_2.predict(X_val) metrics.accuracy_score(y_val, y_pred_2)

Salida:

Consulte el Informe de clasificación para conseguir información sobre la precisión de la clase, la memoria y la puntuación F1.

imprimir (metrics.classification_report (y_val, y_pred_2))

Salida:

La distribución de probabilidad asimismo se puede obtener usando el próximo código.

model_2.predict_probe(X_val)

Parte de salida:

Esta biblioteca le ofrece una distribución de posibilidad de clase (la mayor de las dos es la clase predicha).

Efectuamos una regresión logística con dos bibliotecas.

Comparemos las conjeturas de las dos bibliotecas.

# y_pred es la predicción de la biblioteca statsmodels # y_pred_2 es ​​la predicción de la biblioteca sklearn # Equipara las dos bibliotecas (y_pred == y_pred_2).all()

Salida:

Ambas bibliotecas funcionan de forma idéntica por el hecho de que las matemáticas básicas son comunes a cada biblioteca.

Este cuaderno contiene la implementación del código previo.

Resumen

Este artículo analiza la regresión logística, los conceptos matemáticos asociados con ella y su implementación con el famoso inconveniente de clasificación binaria.

Exploramos mucho más intensamente de qué forma los diferentes umbrales pueden perjudicar el rendimiento de la clasificación y discutimos por qué razón el procedimiento se llama Regresión logística en vez de Clasificación logística.

Los que leen interesados ​​tienen la posibilidad de examinar las distintas opciones disponibles en los métodos consultando la documentación oficial y también procurar solucionar sus problemas de clasificación.

Además, los lectores intentarán solucionar inconvenientes de clasificación multiclase utilizando la regresión logística.

Referencias y lecturas adicionales

~~~~~~~~📱~~~~~~~~

Fikiri.net es el lugar perfecto para encontrar las últimas noticias y reseñas sobre dispositivos y aplicaciones tecnológicas, de esta manera para conseguir consejos y trucos para sacar el máximo provecho de tu tecnología.