Mediante regresión logística en python para la ciencia de datos

Video: Regresión Lineal | Algoritmo & Programa (Python)

Puede utilizar la regresión logística en Python para la ciencia de datos. La regresión lineal es muy adecuado para la estimación de los valores, pero no es la mejor herramienta para predecir la clase de una observación. A pesar de la teoría estadística que aconseja en contra de ella, en realidad se puede tratar de clasificar una clase binaria al anotar una clase como el 1 y el otro como 0. Los resultados son decepcionantes mayor parte del tiempo, por lo que la teoría estadística no estaba equivocado!

El hecho es que la regresión lineal funciona en un continuo de estimaciones numéricas. Con el fin de clasificar correctamente, necesita una medida más adecuada, tal como la probabilidad de pertenencia de clase. Gracias a la siguiente fórmula, que puede transformar una estimación numérica de regresión lineal en una probabilidad de que es más apto para describir cómo una clase encaja una observación:

probabilidad de una clase = exp (r) / (1 + exp (r))

r es el resultado de regresión (la suma de las variables ponderadas por los coeficientes) y exp es la función exponencial. exp (r) se corresponde con el número de Euler mi elevado a la potencia de r. Una regresión lineal usando una fórmula tal (también llamada una función de enlace) para la transformación de sus resultados en probabilidades es una regresión logística.

La aplicación de regresión logística

La regresión logística es similar a la regresión lineal, con la única diferencia de los datos de Y, que debe contener valores enteros que indican la clase con relación a la observación. Utilizando el conjunto de datos del iris de la scikit-learn conjuntos de datos módulo, se pueden utilizar los valores 0, 1 y 2 para denotar tres clases que corresponden a tres especies:

de sklearn.datasets importar load_irisiris = load_iris () X, Y = iris.data [: - 1 ,:], iris.target [: - 1]

Para que el ejemplo sea más fácil trabajar con, dejar un solo valor a cabo de manera que más tarde se puede utilizar este valor para probar la eficacia del modelo de regresión logística en él.

de sklearn.linear_model importación LogisticRegressionlogistic = regresión logística () logistic.fit (X, Y) de impresión `clase pronosticada% s, verdadera clase% s` % (logistic.predict (iris.data [-1,:]), iris.target [-1]) de impresión de probabilidades para cada clase de 0 a 2:% s `% logistic.predict_proba (iris.data [-1,:]) clase pronosticada [2], 2Probabilities reales de clase para cada clase de 0 a 2 : [[0.00168787 0.28720074 0.71111138]]

Contrariamente a la regresión lineal, regresión logística no solo de salida la clase resultante (en este caso, la clase 2), pero también estima la probabilidad de ser parte de la observación de las tres clases. Basándose en la observación utilizado para la predicción, la regresión logística estima una probabilidad de 71 por ciento de su ser de la clase 2 - una alta probabilidad, pero no una puntuación perfecta, por lo tanto, deja un margen de incertidumbre.

Video: Regresión logistica 1

El uso de probabilidades le permite adivinar la clase más probable, pero también se puede ordenar las predicciones con respecto a ser parte de esa clase. Esto es especialmente útil para fines médicos: Ranking una predicción en términos de probabilidad con respecto a los demás puede revelar lo que los pacientes están en mayor riesgo de contraer o que ya tienen una enfermedad.

Teniendo en cuenta que las clases son más

El problema anterior, la regresión logística, se encarga de automatizar un problema de clases múltiples (que comenzó con tres especies de iris de adivinar). La mayoría de los algoritmos proporcionados por scikit-learn que predicen probabilidades o una puntuación para la clase puede manejar automáticamente los problemas multiclase utilizando dos estrategias diferentes:

  • Una comparación de descanso: El algoritmo compara cada clase con todas las clases restantes, la construcción de un modelo para cada clase. Si usted tiene diez clases de adivinar, tiene diez modelos. Este enfoque se basa en el OneVsRestClassifier clase de scikit-learn.

  • Uno contra uno: El algoritmo compara cada clase contra todas las clases restante individual, la construcción de una serie de modelos equivalentes a n * (n-1) / 2, dónde norte es el número de clases. Si usted tiene diez clases, tiene 45 modelos. Este enfoque se basa en el OneVsOneClassifier clase de scikit-learn.

En el caso de regresión logística, la estrategia multiclase por defecto es el frente resto. Este ejemplo muestra cómo utilizar tanto las estrategias con el conjunto de datos dígitos escrita a mano, que contiene una clase de números del 0 al 9. El siguiente código carga los datos y lo coloca en variables.

de sklearn.datasets importar load_digitsdigits = load_digits () X, Y = digits.data [: 1700 ,:], digits.target [: 1700] tx, ty = digits.data [1700:,:], digits.target [1700 :]

Las observaciones son en realidad una cuadrícula de valores de píxeles. Las dimensiones de la cuadrícula son 8 píxeles por 8 píxeles. Para hacer que los datos sean más fáciles de aprender por medio de algoritmos de aprendizaje automático, el código de los alinea en una lista de 64 elementos. El ejemplo se reserva una parte de los ejemplos disponibles para una prueba.

de importación sklearn.multiclass OneVsRestClassifierfrom importación sklearn.multiclass OneVsOneClassifierOVR = OneVsRestClassifier (regresión logística ()) en forma (X, Y) = OVO OneVsOneClassifier (regresión logística ()) en forma (X, Y) de impresión `One vs exactitud resto:..% .3f `OVR.score (Tx, Ty) de impresión% `One vs una precisión:% .3f` % OVO.score (Tx, Ty) una vs exactitud resto: 0.938One vs una precisión: 0.969

Las dos clases multiclase OneVsRestClassifier y OneVsOneclasificador operar mediante la incorporación del estimador (en este caso, LogísticoRegresión). Después de la incorporación, por lo general funcionan igual que cualquier otro algoritmo de aprendizaje en scikit-learn. Curiosamente, la estrategia de uno-contra-uno obtiene la mejor precisión gracias a su gran número de modelos de la competencia.

Cuando se trabaja con Anaconda y Python versión 3.4, puede recibir una advertencia de desaprobación cuando se trabaja con este ejemplo. Estás a salvo a ignorar la advertencia desaprobación - el ejemplo debería funcionar con normalidad. Toda la advertencia desaprobación te dice es que una de las funciones más utilizadas en el ejemplo es debido a una actualización o se dejan de estar disponibles en una versión futura de Python.

Artículos Relacionados