No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Estructura de redes neuronales

3/22
Recursos

Aportes 23

Preguntas 1

Ordenar por:

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

Muchachos, mi aporté que espero pueda ser de gran ayuda a muchos, consiste en un colab que estaré cargando en los tutoriales del curso, donde ahondaré en los temas que se indiquen.
Por ejemplo a este punto del curso, mostraré como se programa de “cero y a mano” el algoritmo del Perceptron, ya que aquí solo se usa desde la librería, y no aprendes realmente como se construye. Esto último en mi concepto será lo que te lleve de ser alguien que solo corre código a alguien que entiende y es realmente un experto en el tema. Espero les guste!!.

Revisando el código, entiendo que el resultado que devuelve el método predict(), sólo indica si pertenece a Virginica(1) o a otra especie (0). Creo que hay un error en la interpretación de resultados.

Las imagenes no se ven en Google Colab

También se puede seleccionar los datos de la longitud y ancho del pétalo con Pandas, de esta forma creo que es más intuitivo el proceso.

# cargar iris dataset como pandas dataframe
df = pd.DataFrame(iris.data, columns=iris.feature_names)
# seleccionar los datos de interes
df_petal = df.drop(['sepal length (cm)', 'sepal width (cm)'], axis=1)
labels = iris.target
# graficar
plt.figure(figsize=(13,6))
plt.scatter(df_petal['petal length (cm)'], df_petal['petal width (cm)'], c=labels, cmap=plt.cm.Set1, edgecolor='face')
plt.xlabel('Longitud pétalo (cm)')
plt.ylabel('Ancho pétalo (cm)')
plt.show()

Tomen el curso de Andrew Ng si aun les quedan dudas sobre algunos conceptos, es bastante bueno y didactico, lo mejor de todo es que es gratis.
https://www.coursera.org/learn/machine-learning/home/welcome

Un comentario, en el ejemplo que se muestra, cuando se entrena el perceptron, se utiliza el ancho y alto de los pétalos como atributos, y como target un arreglo de ceros y unos que indican si cada muestra es una Iris Virginica o no.
Entonces, test_perceptron no clasifica nuevos casos entre 3 tipos de flores, sino que simplemente afirma o niega si es una Iris Virginica o no.
Si me equivoco, me gustaría saberlo.

Falto un concepto en la explicación de los perceptrones. Estas arquitecturas están basadas en la regresión lineal:

Donde:

y’ es la variable que se desea predecir o clasificar.
w1…n son los pesos sinapticos
x es la caracterisitca o atributo conocido

y el concepto que falto es b, conocido como el cesgo de la ecuación, en algunas literaturas se llama como w0. Matematicamente es la ordenada de la ecuación con el eje y. Influye en que no es lo mismo tener esto:

a esto:

Perceptron Multicapa(Utilizando las librerias y datos que ya existen de iris)

from sklearn.neural_network import MLPClassifier

MLP = MLPClassifier()
MLP.fit(iris.data, iris.target)
y1 = MLP.predict([[4.7, 3.5, 1.3, 0.2]]) # 0
y2 = MLP.predict([[6.7, 3.1, 4.4, 1.4]]) # 1
print(f'0 -> Iris Setosa\n1 -> Iris Versicolor\n2 -> Iris Virginica\n\n')
print(f'1. La predicion es {y1}')
print(f'2. La predicion es {y2}')

El contenido del enlace de Redes Neurales no se encuentra disponible, lo cual no permite hacer el ejercicio.

Hola, aquí dejo un video que esta corto que explica cómo funciona la neurona como modelo simple, digamos. Esta bastante bueno

Video: https://youtu.be/MRIv2IwFTPg

Millones de datasets disponibles en linea pero siempre usan iris, me parece oneroso.

Una forma más bonita de ver los resultados de las predicciones y evaluar rápidamente el desempeño del modelo:

plt.figure(figsize=(13,6))
sns.scatterplot(x="petal length (cm)",
                y="petal width (cm)",
                data=df_petal,
                hue=labels_name)

plt.plot(5.1,2,'ro') 
plt.annotate('y1_pred', xy=(5.1,2), xytext=(4.5,2.2),
             arrowprops=dict(facecolor='black', shrink=0.05, width=0.5, headwidth=6),
            horizontalalignment='right', verticalalignment='top')

plt.plot(1.4,0.2,'ro') 
plt.annotate('y2_pred', xy=(1.4,0.2), xytext=(1.55,0.8), 
             arrowprops=dict(facecolor='black', shrink=0.05, width=0.5, headwidth=6),
            horizontalalignment='right', verticalalignment='top')
plt.show()

Lo cual da como resultado:

Recordando que en este caso el perceptrón es un clasificador binario, por lo que predice si la especie pertenece a iris virginica o no. En estos ejemplos el perceptrón clasifico correctamente.

Les comparto unas notas y los notebooks que use, espero les sean de utilidad, sigamos haciendo comunidad.

https://github.com/rb-one/Curso_RedesNeuronales_ScikitLearn/blob/master/Notes/notes.md

Que excelente metodología compartir el notebook!!! Se gana mucho tiempo !!!

Tratando de hacer el ejercicio de tratar de predecir con otros features, al plotear me encuentro con que no parece haber un patrón lineal muy claro

(

En este caso aplica lo de Kernelizar para aumentar dimensiones?

Se puede ver una explicación desde un enfoque más matemático en https://www.youtube.com/watch?v=aircAruvnKk Que por cierto se debería tener cuidado de las referencias si usan material de otro autor.

Muchachos tengo una duda, en qué casos se usa una red neuronal con solo una neurona de salida como esta:

Y en qué casos se usa una red neuronal con más de una neurona en la capa de salida, como estas que por ejemplo tienen 2 y 3 neuronas de salida:


La imagen de las tres clases de Iris la encuentran en éste enlace. O la pueden encontrar acá:

Magnifico!!!

Otro concepto importante, los perceptrones para regresión no tienen función de activación, solo aplica para clasificación. Que en este caso sería el logaritmo de la función sigmoide.

Graficado esto daria algo así:

yo use todas

el curso del señor andrew nos mosro que ser carpintero no es saber qu se hace con las herramientas. si no para que se emplean