Tu primera clasificación con regresión logística

2/17
Recursos

Aportes 13

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Para evitar que se muestren esas advertencias de ConvergeWarning al usar el modelo de regresión logística
es recomendable SIEMPRE poner max_iter=10000, algunas veces basta con solo poner 1000

Para determinar el accuracy o evaluar rápidamente un modelo de Regresion Logistica podemos usar el la función score ( esto no es recomendable cuando se tienen clases muy desbalanceadas pero para “ganar tiempo” resulta muy util)

Ojalá este profe diera el de regresión lineal. Todo es tan claro…

Otra forma de visualizar la matríz de confusión es haciendo uso de la función plot_confussion_matrix , sin embargo, dado que esta función esta algo “obsoleta” es recomensable importar los warnings que se muestran arriba a fin de evitar cualquier “advertencia” o “palabras raras” arriba del gráfica, es mas que todo para mantener la estética del gráfico

A mi no me engañan mas, el random_state=42 es la eleccion correcta.

Hay una pequeña corrección en el grafico de la matriz de confusión. La manera como está declarada la matriz el eje x serian los valores actuales mientras que el eje y seria el valor predicho

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test,predictions)
plt.figure(figsize=(9,9))
sns.heatmap(cm, annot=True, linewidths=.5, square=True, cmap='coolwarm')
plt.ylabel('Predicted label')
plt.xlabel('Actual label')
plt.ylabel('Predicted label')
plt.xlabel('Actual label')

Con este código pueden subir sus propias fotos de dígitos a mano (Escritos sobre fondo negro) y se genera una predicción

from PIL import Image
import math

def classify(img_path):
  image = Image.open(img_path).convert('L')
  plt.imshow(image, cmap='gray')
  plt.title('Your photo')
  plt.show()
  x, y = image.size
  x2, y2 = 8, 8
  image = image.resize((x2,y2))
  image = [np.array(image).flatten()]
  prediction = logistic_reg.predict(image)[0]
  print(f'\n The image has a {prediction}')

classify('/content/example.png')

![](

Para evitar esas letras “raras” luego de usar matplotlib se puede usar ; como se muestra aquí:

**<u>INTERPRETACION DE LA MATRIZ DE CONFUSION</u>** array(\[\[27, 0, 0, 0, 0, 0, 0, 0, 0, 0], \[ 0, 34, 0, 0, 0, 0, 0, 0, 1, 0], \[ 0, 0, 35, 1, 0, 0, 0, 0, 0, 0], \[ 0, 0, 0, 29, 0, 0, 0, 0, 0, 0], \[ 0, 0, 0, 0, 29, 0, 0, 1, 0, 0], \[ 0, 0, 0, 0, 0, 37, 0, 0, 0, 3], \[ 0, 1, 0, 0, 0, 0, 43, 0, 0, 0], \[ 0, 0, 0, 0, 1, 0, 0, 38, 0, 0], \[ 0, 2, 1, 0, 0, 0, 0, 0, 36, 0], \[ 0, 0, 0, 0, 0, 1, 0, 0, 0, 40]]) La matriz que has proporcionado parece ser una matriz de confusión. En una matriz de confusión, los elementos en la diagonal principal representan las predicciones correctas para cada clase, mientras que los elementos fuera de la diagonal principal representan las predicciones incorrectas. Veamos cómo interpretar los elementos fuera de la diagonal: * **Fila 1, Columna 9 (1, 9):** Hay un 1 en esta posición, lo que indica que hay 1 instancia que pertenece a la clase 1 pero fue incorrectamente clasificada como clase 9. * **Fila 2, Columna 8 (2, 8):** Hay un 1 en esta posición, lo que indica que hay 1 instancia que pertenece a la clase 2 pero fue incorrectamente clasificada como clase 8. * **Fila 5, Columna 8 (5, 8):** Hay un 1 en esta posición, lo que indica que hay 1 instancia que pertenece a la clase 5 pero fue incorrectamente clasificada como clase 8. * **Fila 6, Columna 10 (6, 10):** Hay un 3 en esta posición, lo que indica que hay 3 instancias que pertenecen a la clase 6 pero fueron incorrectamente clasificadas como clase 10. * **Fila 8, Columna 2 (8, 2):** Hay un 2 en esta posición, lo que indica que hay 2 instancias que pertenecen a la clase 8 pero fueron incorrectamente clasificadas como clase 2. * **Fila 9, Columna 3 (9, 3):** Hay un 1 en esta posición, lo que indica que hay 1 instancia que pertenece a la clase 9 pero fue incorrectamente clasificada como clase 3. También, hay un 2 en la posición (9, 2), lo que indica que hay 2 instancias que pertenecen a la clase 9 pero fueron incorrectamente clasificadas como clase 2. Estos valores indican las instancias que fueron clasificadas incorrectamente para cada par de clases. En general, una matriz de confusión proporciona información detallada sobre el rendimiento del modelo de clasificación, permitiendo identificar los tipos y cantidades de errores cometidos por el modelo.
<u>INTERPRETACION DE LA MATRIX DE CONFUSION</u> ```js array([[27, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 34, 0, 0, 0, 0, 0, 0, 1, 0], [ 0, 0, 35, 1, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 29, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 29, 0, 0, 1, 0, 0], [ 0, 0, 0, 0, 0, 37, 0, 0, 0, 3], [ 0, 1, 0, 0, 0, 0, 43, 0, 0, 0], [ 0, 0, 0, 0, 1, 0, 0, 38, 0, 0], [ 0, 2, 1, 0, 0, 0, 0, 0, 36, 0], [ 0, 0, 0, 0, 0, 1, 0, 0, 0, 40]]) ```array(\[\[27, 0, 0, 0, 0, 0, 0, 0, 0, 0], \[ 0, 34, 0, 0, 0, 0, 0, 0, 1, 0], \[ 0, 0, 35, 1, 0, 0, 0, 0, 0, 0], \[ 0, 0, 0, 29, 0, 0, 0, 0, 0, 0], \[ 0, 0, 0, 0, 29, 0, 0, 1, 0, 0], \[ 0, 0, 0, 0, 0, 37, 0, 0, 0, 3], \[ 0, 1, 0, 0, 0, 0, 43, 0, 0, 0], \[ 0, 0, 0, 0, 1, 0, 0, 38, 0, 0], \[ 0, 2, 1, 0, 0, 0, 0, 0, 36, 0], \[ 0, 0, 0, 0, 0, 1, 0, 0, 0, 40]]) La matriz que has proporcionado parece ser una matriz de confusión. En una matriz de confusión, los elementos en la diagonal principal representan las predicciones correctas para cada clase, mientras que los elementos fuera de la diagonal principal representan las predicciones incorrectas. Veamos cómo interpretar los elementos fuera de la diagonal: * **Fila 1, Columna 9 (1, 9):** Hay un 1 en esta posición, lo que indica que hay 1 instancia que pertenece a la clase 1 pero fue incorrectamente clasificada como clase 9. * **Fila 2, Columna 8 (2, 8):** Hay un 1 en esta posición, lo que indica que hay 1 instancia que pertenece a la clase 2 pero fue incorrectamente clasificada como clase 8. * **Fila 5, Columna 8 (5, 8):** Hay un 1 en esta posición, lo que indica que hay 1 instancia que pertenece a la clase 5 pero fue incorrectamente clasificada como clase 8. * **Fila 6, Columna 10 (6, 10):** Hay un 3 en esta posición, lo que indica que hay 3 instancias que pertenecen a la clase 6 pero fueron incorrectamente clasificadas como clase 10. * **Fila 8, Columna 2 (8, 2):** Hay un 2 en esta posición, lo que indica que hay 2 instancias que pertenecen a la clase 8 pero fueron incorrectamente clasificadas como clase 2. * **Fila 9, Columna 3 (9, 3):** Hay un 1 en esta posición, lo que indica que hay 1 instancia que pertenece a la clase 9 pero fue incorrectamente clasificada como clase 3. También, hay un 2 en la posición (9, 2), lo que indica que hay 2 instancias que pertenecen a la clase 9 pero fueron incorrectamente clasificadas como clase 2. Estos valores indican las instancias que fueron clasificadas incorrectamente para cada par de clases. En general, una matriz de confusión proporciona información detallada sobre el rendimiento del modelo de clasificación, permitiendo identificar los tipos y cantidades de errores cometidos por el modelo.
Aca los imports ```js from sklearn.datasets import load_digits import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import numpy as np from sklearn.linear_model import LogisticRegression ```from sklearn.datasets import load\_digitsimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport numpy as npfrom sklearn.linear\_model import LogisticRegression
A hacer el Split me da el siguiente error: ![](https://static.platzi.com/media/user_upload/image-06f682ab-3827-42d0-8627-b02979165559.jpg) ![](https://static.platzi.com/media/user_upload/image-e7754ade-51c0-4d33-a7a8-48b2e5b09144.jpg)

Qué clase tan completa en solo una se hizo todo…

Si desean acceder a las imagenes sin hacer reshape: digits.images