Teoría

Una red neural (ANN) modela la ralción entre un conjunto de entradas y una salida, resolviendo un problema de aprendizaje.

Algunos ejemplos de aplicación de ANN son:

  • La recomendación de contenido de Netflix
  • El feed de Instagram
  • Determinar el número escrito a mano

Ejercicio 1. ¿Pasé la materia?

1. Instalar paquetes y llamar librerías

#install.packages("neuralnet")
library(neuralnet)

2. Obtener datos

examen<- c(20,10,30,20,80,30)
proyecto<- c(90,20,40,50,50,80)
estatus<- c(1,0,0,0,0,1)
df1<- data.frame(examen,proyecto,estatus)
head(df1)
##   examen proyecto estatus
## 1     20       90       1
## 2     10       20       0
## 3     30       40       0
## 4     20       50       0
## 5     80       50       0
## 6     30       80       1

3. Generar la Red Neuronal

set.seed(123)
rn1<- neuralnet(estatus ~., data =df1)
plot(rn1, rep= "best")

4. Predecir resultados

prueba_examen<- c(30,40,85)
prueba_proyecto<- c(85,50,40)
prueba1<- data.frame(prueba_examen, prueba_proyecto)
prediccion1<- compute(rn1, prueba1)
prediccion1$net.result
##             [,1]
## [1,]  1.04011743
## [2,] -0.02359178
## [3,] -0.02359178
probabilidad1<- prediccion1$net.result
resultado1<- ifelse(probabilidad1>0.5,1,0)
resultado1
##      [,1]
## [1,]    1
## [2,]    0
## [3,]    0

Ejercicio 2. Cáncer de mama

1. Instalar paquetes y llamar librerías

#install.packages("neuralnet")
#library(neuralnet)

2. Obtener datos

 #file.choose()
df2 <- read.csv("C:\\Users\\LuisD\\Documents\\Concentración\\cancer.csv")
df2$diagnosis<- ifelse(df2$diagnosis=="M",1,0)
#summary(df2)

3. Generar la Red Neuronal

set.seed(123)
rn2<- neuralnet(diagnosis ~., data =df2)
plot(rn2, rep= "best")

4. Predecir resultados

prueba_cancer<- df2[18:22, ]
prueba_cancer$diagnosis<- NULL
prueba_cancer
##    radius_mean texture_mean perimeter_mean area_mean smoothness_mean
## 18      16.130        20.68         108.10     798.8         0.11700
## 19      19.810        22.15         130.00    1260.0         0.09831
## 20      13.540        14.36          87.46     566.3         0.09779
## 21      13.080        15.71          85.63     520.0         0.10750
## 22       9.504        12.44          60.34     273.9         0.10240
##    compactness_mean concavity_mean concave.points_mean symmetry_mean
## 18          0.20220        0.17220             0.10280        0.2164
## 19          0.10270        0.14790             0.09498        0.1582
## 20          0.08129        0.06664             0.04781        0.1885
## 21          0.12700        0.04568             0.03110        0.1967
## 22          0.06492        0.02956             0.02076        0.1815
##    fractal_dimension_mean radius_se texture_se perimeter_se area_se
## 18                0.07356    0.5692     1.0730        3.854   54.18
## 19                0.05395    0.7582     1.0170        5.865  112.40
## 20                0.05766    0.2699     0.7886        2.058   23.56
## 21                0.06811    0.1852     0.7477        1.383   14.67
## 22                0.06905    0.2773     0.9768        1.909   15.70
##    smoothness_se compactness_se concavity_se concave.points_se symmetry_se
## 18      0.007026        0.02501      0.03188           0.01297     0.01689
## 19      0.006494        0.01893      0.03391           0.01521     0.01356
## 20      0.008462        0.01460      0.02387           0.01315     0.01980
## 21      0.004097        0.01898      0.01698           0.00649     0.01678
## 22      0.009606        0.01432      0.01985           0.01421     0.02027
##    fractal_dimension_se radius_worst texture_worst perimeter_worst area_worst
## 18             0.004142        20.96         31.48          136.80     1315.0
## 19             0.001997        27.32         30.88          186.80     2398.0
## 20             0.002300        15.11         19.26           99.70      711.2
## 21             0.002425        14.50         20.49           96.09      630.5
## 22             0.002968        10.23         15.66           65.13      314.9
##    smoothness_worst compactness_worst concavity_worst concave.points_worst
## 18           0.1789            0.4233         0.47840              0.20730
## 19           0.1512            0.3150         0.53720              0.23880
## 20           0.1440            0.1773         0.23900              0.12880
## 21           0.1312            0.2776         0.18900              0.07283
## 22           0.1324            0.1148         0.08867              0.06227
##    symmetry_worst fractal_dimension_worst
## 18         0.3706                 0.11420
## 19         0.2768                 0.07615
## 20         0.2977                 0.07259
## 21         0.3184                 0.08183
## 22         0.2450                 0.07773
prediccion2<- compute(rn2, prueba_cancer)
prediccion2$net.result
##         [,1]
## 18 0.3725802
## 19 0.3725802
## 20 0.3725802
## 21 0.3725802
## 22 0.3725802
probabilidad2<- prediccion2$net.result
probabilidad2
##         [,1]
## 18 0.3725802
## 19 0.3725802
## 20 0.3725802
## 21 0.3725802
## 22 0.3725802
resultado2<- ifelse(probabilidad2>0.5,1,0)
resultado2
##    [,1]
## 18    0
## 19    0
## 20    0
## 21    0
## 22    0
LS0tDQp0aXRsZTogIlJlZGVzIG5ldXJvbmFsZXMiDQphdXRob3I6ICJMdWlzIERhdmlkIFPDoW5jaGV6IENhc3RpbGxvIC0gQTAxMjc1NjU1Ig0KZGF0ZTogIjIvMjIvMjAyNCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgdGhlbWU6IHlldGkNCiAgcGRmX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQotLS0NCg0KICAhW10oQzpcXFVzZXJzXFxMdWlzRFxcRG9jdW1lbnRzXFxDb25jZW50cmFjacOzblxcbm5ldC5wbmcpDQoNCiMgPHNwYW4gc3R5bGU9ICJjb2xvcjogYmx1ZTsiPlRlb3LDrWE8L3NwYW4+IA0KICBVbmEgcmVkIG5ldXJhbCAoQU5OKSBtb2RlbGEgbGEgcmFsY2nDs24gZW50cmUgdW4gY29uanVudG8gZGUgZW50cmFkYXMgeSB1bmEgc2FsaWRhLCByZXNvbHZpZW5kbyB1biBwcm9ibGVtYSBkZSBhcHJlbmRpemFqZS4gIA0KICANCiAgQWxndW5vcyBlamVtcGxvcyBkZSBhcGxpY2FjacOzbiBkZSBBTk4gc29uOiAgDQogIA0KICAqIExhIHJlY29tZW5kYWNpw7NuIGRlIGNvbnRlbmlkbyBkZSBOZXRmbGl4ICANCiAgKiBFbCBmZWVkIGRlIEluc3RhZ3JhbSAgDQogICogRGV0ZXJtaW5hciBlbCBuw7ptZXJvIGVzY3JpdG8gYSBtYW5vICANCg0KIyA8c3BhbiBzdHlsZT0gImNvbG9yOiBibHVlOyI+RWplcmNpY2lvIDEuIMK/UGFzw6kgbGEgbWF0ZXJpYT88L3NwYW4+DQoNCiMjIDxzcGFuIHN0eWxlPSAiY29sb3I6IGJsdWU7Ij4xLiBJbnN0YWxhciBwYXF1ZXRlcyB5IGxsYW1hciBsaWJyZXLDrWFzPC9zcGFuPg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiNpbnN0YWxsLnBhY2thZ2VzKCJuZXVyYWxuZXQiKQ0KbGlicmFyeShuZXVyYWxuZXQpDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ICJjb2xvcjogYmx1ZTsiPjIuIE9idGVuZXIgZGF0b3M8L3NwYW4+DQpgYGB7cn0NCmV4YW1lbjwtIGMoMjAsMTAsMzAsMjAsODAsMzApDQpwcm95ZWN0bzwtIGMoOTAsMjAsNDAsNTAsNTAsODApDQplc3RhdHVzPC0gYygxLDAsMCwwLDAsMSkNCmRmMTwtIGRhdGEuZnJhbWUoZXhhbWVuLHByb3llY3RvLGVzdGF0dXMpDQpoZWFkKGRmMSkNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0gImNvbG9yOiBibHVlOyI+My4gR2VuZXJhciBsYSBSZWQgTmV1cm9uYWw8L3NwYW4+DQpgYGB7cn0NCnNldC5zZWVkKDEyMykNCnJuMTwtIG5ldXJhbG5ldChlc3RhdHVzIH4uLCBkYXRhID1kZjEpDQpwbG90KHJuMSwgcmVwPSAiYmVzdCIpDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ICJjb2xvcjogYmx1ZTsiPjQuIFByZWRlY2lyIHJlc3VsdGFkb3M8L3NwYW4+DQpgYGB7cn0NCnBydWViYV9leGFtZW48LSBjKDMwLDQwLDg1KQ0KcHJ1ZWJhX3Byb3llY3RvPC0gYyg4NSw1MCw0MCkNCnBydWViYTE8LSBkYXRhLmZyYW1lKHBydWViYV9leGFtZW4sIHBydWViYV9wcm95ZWN0bykNCnByZWRpY2Npb24xPC0gY29tcHV0ZShybjEsIHBydWViYTEpDQpwcmVkaWNjaW9uMSRuZXQucmVzdWx0DQpwcm9iYWJpbGlkYWQxPC0gcHJlZGljY2lvbjEkbmV0LnJlc3VsdA0KcmVzdWx0YWRvMTwtIGlmZWxzZShwcm9iYWJpbGlkYWQxPjAuNSwxLDApDQpyZXN1bHRhZG8xDQpgYGANCg0KDQojIDxzcGFuIHN0eWxlPSAiY29sb3I6IGdyZWVuOyI+RWplcmNpY2lvIDIuIEPDoW5jZXIgZGUgbWFtYTwvc3Bhbj4NCg0KIyMgPHNwYW4gc3R5bGU9ICJjb2xvcjogZ3JlZW47Ij4xLiBJbnN0YWxhciBwYXF1ZXRlcyB5IGxsYW1hciBsaWJyZXLDrWFzPC9zcGFuPg0KYGBge3J9DQojaW5zdGFsbC5wYWNrYWdlcygibmV1cmFsbmV0IikNCiNsaWJyYXJ5KG5ldXJhbG5ldCkNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0gImNvbG9yOiBncmVlbjsiPjIuIE9idGVuZXIgZGF0b3M8L3NwYW4+DQpgYGB7cn0NCiAjZmlsZS5jaG9vc2UoKQ0KZGYyIDwtIHJlYWQuY3N2KCJDOlxcVXNlcnNcXEx1aXNEXFxEb2N1bWVudHNcXENvbmNlbnRyYWNpw7NuXFxjYW5jZXIuY3N2IikNCmRmMiRkaWFnbm9zaXM8LSBpZmVsc2UoZGYyJGRpYWdub3Npcz09Ik0iLDEsMCkNCiNzdW1tYXJ5KGRmMikNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0gImNvbG9yOiBncmVlbjsiPjMuIEdlbmVyYXIgbGEgUmVkIE5ldXJvbmFsPC9zcGFuPg0KYGBge3J9DQpzZXQuc2VlZCgxMjMpDQpybjI8LSBuZXVyYWxuZXQoZGlhZ25vc2lzIH4uLCBkYXRhID1kZjIpDQpwbG90KHJuMiwgcmVwPSAiYmVzdCIpDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ICJjb2xvcjogZ3JlZW47Ij40LiBQcmVkZWNpciByZXN1bHRhZG9zPC9zcGFuPg0KYGBge3J9DQpwcnVlYmFfY2FuY2VyPC0gZGYyWzE4OjIyLCBdDQpwcnVlYmFfY2FuY2VyJGRpYWdub3NpczwtIE5VTEwNCnBydWViYV9jYW5jZXINCg0KcHJlZGljY2lvbjI8LSBjb21wdXRlKHJuMiwgcHJ1ZWJhX2NhbmNlcikNCnByZWRpY2Npb24yJG5ldC5yZXN1bHQNCnByb2JhYmlsaWRhZDI8LSBwcmVkaWNjaW9uMiRuZXQucmVzdWx0DQpwcm9iYWJpbGlkYWQyDQpyZXN1bHRhZG8yPC0gaWZlbHNlKHByb2JhYmlsaWRhZDI+MC41LDEsMCkNCnJlc3VsdGFkbzINCmBgYA0K