Documente Academic
Documente Profesional
Documente Cultură
ARTIFICIALES
MIGUEL CAON Y NATHALY TRIVIO
Las redes neuronales artificiales son un campo importante de la Inteligencia
Artificial muy importante que utiliza el conocimiento experimental para razonar y
resolver problemas especficos. Es inspirada en el comportamiento del celebro
humano para darle solucin a los problemas con tcnicas algortmicas
convencionales.
Estas redes estn dirigidas a modelar la forma de procesamiento de la informacin
en sistemas nerviosos biolgicos. Especialmente, por la forma de funcionamiento
del cerebro humano (sistema complejo, no p-lineal y paralelo), que es distinta al
funcionamiento de un computador convencional. La red neuronal es en pocas
palabras es un procesador de informacin, de distribucin altamente paralela,
constituido por unidades sencillas o complejas. Se puede caracterizar por adquirir
conocimiento a travs de la experiencia, tener plasticidad y adaptabilidad, adems
posee un alto nivel de tolerancia a las fallas y se destaca en ser altamente no-lineal
(M Maneta, 2003).
Haciendo una analoga entre las redes neuronales biolgicas y las redes neuronales
artificiales, las redes biolgicas haciendo referencia a las neuronas interconectadas
entre si formando circuitos que desarrollan funciones especficas de los seres
humanos, cambiando informacin de forma fugaz, para realizar actividades, pero
para llegar a tomar una decisin el ser humano se demora 0.01 segundos en
reconocer la respuesta. Por otro lado de forma simplificada, las redes neuronales
artificiales reciben la informacin, la procesan en las matrices de pesos, donde son
evaluados los impulsos, combinndose con una funcin objetivo, el cual nos dar la
respuesta potencial de la neurona.
La relacin entre estas dos se puede definir inicialmente que los valores de entrada
son equivalentes a las seales que sern enviadas hacia otras neuronas. La matriz
de los pesos equivale a al neuronas biolgicas a los mecanismos que existen en la
sinapsis para transmitir la seal. As que cuando se unan estos valores se comienza
el entrenamiento de los datos, logrando obtener una tendencia del comportamiento
de la seal. Estos valores obtenidos son la entrada de la funcin (suma ponderada
de la entrada por el peso) de la red, lo que equivaldra a total de las seales que
llegan a la neurona por las dendritas (Ballesteros, s.f.)
La salida de funcin de ponderacin llega a la funcin de activacin que transforma
este valor en otro en el dominio que trabajen las salidas de las neuronas. El valor de
salida cumplira la funcin de la tasa de disparo en las neuronas biolgicas.
Neurona Biolgica
Neurona Artificial
Conexiones sinpticas
Conexiones ponderadas
Efectividad de la sinapsis
Efecto
excitador
inhibidor
de
conexin
o
una
Efecto combinado de la
sinapsis
Funcin de propagacin o
de red
Para el desarrollo de este tema, se tienen datos de una tormenta en Bogot, la cual
ser interpolada para tener cada 15 min en toda el rea influyente de la tormenta.
Inicialmente se realiza la ubicacin de las estaciones que se tienen, con ello se
puede observar en la Figura 1, que la densidad de las estaciones es mayor
aproximadamente en las coordenadas 1010.000 Norte y 1000.000 Este.
del MDE de una forma rpida y simple. Sin embargo, se trata esencialmente de una
media ponderada y, por tanto, el resultado se encuentra siempre incluido dentro del
rango de variacin de los datos. Por este motivo, el correcto tratamiento de las
formas cncavas y convexas depende estrechamente de la distribucin de los
puntos originales y la presencia de datos auxiliares se hace muy conveniente
(Universidad de Oviedo, 2015).
A continuacin en la Figura 2, se muestran las interpolaciones obtenidas, en t=4,
t=11, t=23, t=42, t=55 y t=61.
La matriz de pesos fue definida segn el nmero de entradas y salidas, en este caso
se tienen XX entradas y XX salidas, entonces se hace una matriz llenada de forma
aleatoria de XX * XX. En el Anexo 2 se puede observar el algoritmo realizado para la
evaluacin de la red. Los resultados obtenidos se pueden observar en la Figura 5, la
dispersin de lo obtenido, con esto
ACA COMENTAR LA GRAFICA DE LOS RESULTADOS.
def
pixel(xmax,xmin,ymax,y
min,nx,ny):
pixelWidth=abs(xmi
n-xmax)/nx
pixelHeight=abs(ym
in-ymax)/ny
return
pixelWidth,pixelHeight
def
array2raster(newRaster
fn, array,pixelWidth,
pixelHeight,cols,rows,
xorg,yorg):
originX = xorg
originY = yorg
driver =
gdal.GetDriverByName('
GTiff')
outRaster =
driver.Create(newRaste
rfn, cols, rows, 1,
gdal.GDT_Float64)
outRaster.SetGeoTr
ansform((originX,
pixelWidth, 0,
originY, 0,
pixelHeight))
outband =
outRaster.GetRasterBan
d(1)
outband.WriteArray
(array)
outRasterSRS =
osr.SpatialReference()
outRasterSRS.Impor
tFromEPSG(3116)
outRaster.SetProje
ction(outRasterSRS.Exp
ortToWkt())
outband.FlushCache
()
def IDW
(x,y,z,nx,ny,xmax,xmin
,ymax,ymin,power=2):
def distancia(x,
y, xi, yi):
#genera la
distancia euclidea
entre dos puntos
obs =
np.vstack((x, y)).T
interpolar =
np.vstack((xi, yi)).T
d0 =
np.subtract.outer(obs[
:,0], interpolar[:,0])
d1 =
np.subtract.outer(obs[
:,1], interpolar[:,1])
Md=np.hypot(d0
, d1)
return Md
def
malla(xmax,xmin,ymax,y
min,nx,ny):
#genera la
malla de puntos
desconocidos los
cuales se van a
interpolar
xi=np.linspac
e(xmin,xmax,nx)
yi=np.linspac
e(ymin,ymax,ny)
xi,
yi=np.meshgrid(xi,yi)
xi, yi =
xi.flatten(),
yi.flatten()
return xi,yi
# divisiones de la
malla
xi,yi=malla(xmax,x
min,ymax,ymin,nx,ny)
# Generamos las
disntacias entre los
puntos conocidos y
desconocidos
dist =
distancia(x,y, xi,yi)
# W pesos
W = 1.0 /
dist**power
W /= W.sum(axis=0)
# multiplica los
pesos por los valores
observados z
zi = np.dot(W.T,
z)
# se genera una
matrix con el tamano
de las celdas en x y y
zi=zi.reshape(nx,n
y)
return xi,yi,zi
def jackknife(df):
# Funciones para
las metricas
def ME(obs,sim):
A=np.mean(obssim)
return A
def MARE(obs,sim):
A=np.mean(abs(
obs-sim)/obs)
return A
def distancia(x,
y, xi, yi):
#genera la
distancia euclidea
entre dos puntos
obs =
np.vstack((x, y)).T
interpolar =
np.vstack((xi, yi)).T
d0 =
np.subtract.outer(obs[
:,0], interpolar[:,0])
d1 =
np.subtract.outer(obs[
:,1], interpolar[:,1])
Md=np.hypot(d0
, d1)
return Md
#Matriz de
almacenamiento
errores=np.zeros([
np.size(df,axis=0),2])
#CICLO QUE RECORRA
TODOS LOS DATOS
for i in range
(np.size(df,axis=0)):
##Separar
valores del data frame
original
observados=df[
i:i+1]
id=
observados.index
data =
df.drop(id,axis=0)
# matriz N-1
x=data['Este']
y=data['Norte'
]
z=data['z']
# datos
Extraidos
xi=observados[
'Este']
yi=observados[
'Norte']
obs=observados
['z']
# METODO idw
dist=distancia
(x, y, xi, yi)
W = 1.0 /
dist**2
W /=
W.sum(axis=0)
sim =
np.dot(W.T, z)
# Metricas
errores[i,0:]=
ME(obs,sim)
errores[i,1:]=
MARE(obs,sim)
E=pd.DataFrame
(errores)
E.columns=['Me
an error','Mean
Absolute relative
error']
E.to_excel('Er
rores_jacknife.xlsx','
Errores')
E.hist()
plt.savefig('Histo
grama Errores.png',
fmt='png', dpi=300)
plt.show()
return E
fn='datos.xlsx'
df =
pd.read_excel(fn,'Lluv
ia',index_col=0)
#print df.head()
nx=100 # numero de
Celdas en X
ny=100 # numero de
Celdas en Y
x=df['Este']
y=df['Norte']
xmax=np.max(x)#873346.
050446
xmin=np.min(x)#708428.
281178
ymax=np.max(y)#838345.
286362
ymin=np.min(y)#652604.
566429
fig, ax = subplots()
ax.scatter(df.Este,
df.Norte, c=df.t_1,
cmap='gray')
ax.set_aspect(1)
xlabel('Este [m]')
ylabel('Norte [m]')
title('Precipitacion
[mm]')
plt.show()
filas=['t_1','t_2','t_
3','t_4','t_5','t_6','
t_7','t_8','t_9','t_10
','t_11','t_12','t_13'
,'t_14','t_15','t_16',
't_17','t_18','t_19','
t_20','t_21','t_22','t
_23','t_24','t_25','t_
26','t_27','t_28','t_2
9','t_30','t_31','t_32
','t_33','t_34','t_35'
,'t_36','t_37','t_38',
't_39','t_40','t_41','
t_42','t_43','t_44','t
_45','t_46','t_47','t_
48','t_49','t_50','t_5
1','t_52','t_53','t_54
','t_55','t_56','t_57'
,'t_58','t_59','t_60',
't_61']
wr='interpolaciones.xl
sx'
libro_excel =
pd.ExcelWriter(wr)
for f in filas[0:]:
z=df[f]
xi,yi,zi=IDW(x,y,z
,nx,ny,xmax,xmin,ymax,
ymin)
#print zi,f
##################
###########
print f
###############
Ph =
plt.imshow(zi)
fig = plt.gcf()
plt.clim()
#
clamp the color limits
plt.title(f)
fnz='interpolacion
_'+ f +'_'+ '.png'
plt.tight_layout()
plt.colorbar( orie
ntation='horizontal')
#plt.pause(0.5)
plt.waitforbuttonp
ress()
draw()
#plt.savefig(fnz,
dpi=1000,
pad_inches=0.5)
#plt.close()
"""
zi)
data=pd.DataFrame(
with
pd.ExcelWriter(wr) as
writer:
data.to_excel(
libro_excel,
sheet_name=f,
merge_cells=False)
libro_excel.save()