grydra 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/gr/core.rb +84 -3
- data/lib/gr/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 37dd8b10192bf544515650cdfa80a827412a157cab145b7fade5f83bacfa1b62
|
|
4
|
+
data.tar.gz: f6732dd3b23cdde33299c5507fd25899266d768aceb057f495306edfe727bf3a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 506d94b9db23945c3dbf28bb8b7cfd26bb0aff454cd6e2ebdf1cdddfc88751ce2dd25bbd72960cf79f8ca63b88eb31f7195c2be6fec886a987d16b4baa52cc20
|
|
7
|
+
data.tar.gz: 1a229b7c8d7d59f68418e953a99e75852dc4156fd9cb70ea874943a2dbfbf7601e4e2e54ce09e85325f16d6496fd3462e0facf71a9c3c99966485c7582ebd48a
|
data/lib/gr/core.rb
CHANGED
|
@@ -666,6 +666,12 @@ module GR
|
|
|
666
666
|
ejemplo: <<~EX
|
|
667
667
|
vectores_norm = GR.normalizar_con_vocabulario(vectores, vocabulario)
|
|
668
668
|
EX
|
|
669
|
+
},
|
|
670
|
+
'GR.generar_ejemplo' => {
|
|
671
|
+
descripcion: 'Genera un ejemplo con código funcioanl con la libreria, con ejemplos del 1 al 9.',
|
|
672
|
+
ejemplo: <<~EX
|
|
673
|
+
GR.generar_ejemplo(1)
|
|
674
|
+
EX
|
|
669
675
|
}
|
|
670
676
|
}
|
|
671
677
|
|
|
@@ -899,7 +905,7 @@ puts "Entrenando red..."
|
|
|
899
905
|
red.entrenar_numericos(datos_in, datos_out, estructuras, 0.5, 30000, :zscore)
|
|
900
906
|
#red.entrenar_numericos(datos_in, datos_out, estructuras, 0.5, 30000, :max)
|
|
901
907
|
|
|
902
|
-
puts "
|
|
908
|
+
puts "\\nIngrese los grados Celsius separados por espacio:"
|
|
903
909
|
print "<< "
|
|
904
910
|
entrada_usuario = gets.chomp.split.map(&:to_f).map { |v| [v] }
|
|
905
911
|
|
|
@@ -1042,9 +1048,84 @@ predicciones = modelo.predecir_numericos(nuevos_datos, normalizacion)
|
|
|
1042
1048
|
puts "Predicción peso (kg) para altura \#{nuevos_datos[0][0]} cm y edad \#{nuevos_datos[0][1]} años:"
|
|
1043
1049
|
puts predicciones.map { |p| p[0].round(2) }
|
|
1044
1050
|
RUBY
|
|
1051
|
+
when 9
|
|
1052
|
+
contenido = <<-RUBY
|
|
1053
|
+
#Programa para determinar el precio de un producto
|
|
1054
|
+
require 'grydra'
|
|
1055
|
+
|
|
1056
|
+
#costo del producto sera usado en dolares
|
|
1057
|
+
|
|
1058
|
+
datos_entrada = [
|
|
1059
|
+
[10, 0], #<-- Numero de productos por empresa y (0 y 1) si es vip o no
|
|
1060
|
+
[15, 0],
|
|
1061
|
+
[8, 1],
|
|
1062
|
+
[20, 1],
|
|
1063
|
+
[12, 0],
|
|
1064
|
+
[30, 1],
|
|
1065
|
+
[25, 1],
|
|
1066
|
+
[5, 0],
|
|
1067
|
+
[18, 0],
|
|
1068
|
+
[40, 1]
|
|
1069
|
+
]
|
|
1070
|
+
#Precio en dolares
|
|
1071
|
+
datos_salida = [
|
|
1072
|
+
[20],
|
|
1073
|
+
[28],
|
|
1074
|
+
[25],
|
|
1075
|
+
[45],
|
|
1076
|
+
[22],
|
|
1077
|
+
[60],
|
|
1078
|
+
[50],
|
|
1079
|
+
[12],
|
|
1080
|
+
[32],
|
|
1081
|
+
[80]
|
|
1082
|
+
]
|
|
1083
|
+
|
|
1084
|
+
#Normalziación de datos (dato común --> Dato vectorial)
|
|
1085
|
+
max_en = GR.calcular_maximos(datos_entrada, :max) #Usaremos la normalizacion con max, aunque se puede con zscore
|
|
1086
|
+
max_sal = GR.calcular_maximos(datos_salida, :max)
|
|
1087
|
+
|
|
1088
|
+
datos_en_no = GR.normalizar_varios(datos_entrada, max_en, :max) #Por defecto usa max, entonces es opcional usar el :max
|
|
1089
|
+
datos_sal_no = GR.normalizar_varios(datos_salida, max_sal)
|
|
1090
|
+
|
|
1091
|
+
#Creamos la red
|
|
1092
|
+
red = GR::RedPrincipal.new
|
|
1093
|
+
|
|
1094
|
+
#Necesitamos agregar subredes a nuestra red
|
|
1095
|
+
red.agregar_subred([2, 4, 1], [:relu, :tanh])
|
|
1096
|
+
red.agregar_subred([2, 3, 1], [:tanh, :tanh])
|
|
1097
|
+
|
|
1098
|
+
|
|
1099
|
+
puts "Entrenando subredes"
|
|
1100
|
+
red.entrenar_subredes(
|
|
1101
|
+
[
|
|
1102
|
+
{entrada: datos_en_no, salida: datos_sal_no},
|
|
1103
|
+
{entrada: datos_en_no, salida: datos_sal_no}
|
|
1104
|
+
],
|
|
1105
|
+
0.2, #Tasa de aprendizaje
|
|
1106
|
+
20000, #Número de epocas
|
|
1107
|
+
batch_size: 3, #Quiere decir que analizara de 3 en 3 datos
|
|
1108
|
+
paciencia: 500, #Si los resultados no mejoran en esas epocas entonces parara esa red
|
|
1109
|
+
decay: 0.995 #número por el cual va a multiplicar
|
|
1110
|
+
)
|
|
1111
|
+
|
|
1112
|
+
puts "Introduce los nuevos valores para predecir el precio del producto ej: (12 0)"
|
|
1113
|
+
|
|
1114
|
+
|
|
1115
|
+
valores = gets.chomp.strip.split.map(&:to_f)
|
|
1116
|
+
|
|
1117
|
+
entrada_nor = GR.normalizar_varios([valores], max_en, :max)[0]
|
|
1118
|
+
prediccion = red.combinar_resultados(entrada_nor)
|
|
1119
|
+
prediccion_desnorm = prediccion[0] * max_sal[0]
|
|
1120
|
+
puts "Precio aproximado en dolares es de $\#{prediccion_desnorm.round(2)}"
|
|
1121
|
+
RUBY
|
|
1122
|
+
else
|
|
1123
|
+
puts "\e[1;35mLos ejemplos posibles son del 1 al 9\e[0m"
|
|
1124
|
+
end
|
|
1125
|
+
if num_ejemplo <= 9 && num_ejemplo >= 1
|
|
1126
|
+
File.write("#{nombre_archivo}.#{extension}", contenido)
|
|
1127
|
+
puts "Ejemplo generado y guardado en \e[33m#{path}/#{nombre_archivo}\e[0m"
|
|
1045
1128
|
end
|
|
1046
|
-
File.write("#{nombre_archivo}.#{extension}", contenido)
|
|
1047
|
-
puts "Ejemplo generado y guardado en \e[33m#{path}/#{nombre_archivo}\e[0m"
|
|
1048
1129
|
end
|
|
1049
1130
|
end
|
|
1050
1131
|
|
data/lib/gr/version.rb
CHANGED