dersblog

Günlük baz meteoroloji verileriyle bir(kaç) gün sonrası yağmur yagıp yağmayacağı evrişimsel ağ (convolutional network -CNN-) ile tahmin edilebilir mi? Alttaki makalede mümkün olabileceği bahsediliyor.

https://deepstruct.github.io/ICML17/1stDeepStructWSpaper2.pdf

Bu yaklaşım farklı bir veri üzerinde kullanabilir belki.

ABD NOAA'dan dünyada 100K+ civarı istasyondan alınmış 20+ ölçüm öğesi üzerinden günlük verileri indiririz. Mesela 2016 için

wget http://www1.ncdc.noaa.gov/pub/data/ghcn/daily/by_year/2016.csv.gz

Biz bu verileri indirip zip haline getirdik,

2012-2018

https://drive.google.com/open?id=1nPnKSHjDEacKw7fbXaYn5b-Sf86SxOvr

https://drive.google.com/open?id=1J9A6Nwyy4iJ3W56D1_l-ncmODPCaev5m

https://drive.google.com/open?id=1tGpA60u8ZcfwTGaU0qmtGLHFnjC89H8C

https://drive.google.com/open?id=18EeWt12ce4gTtL13mH1SjoAC-a4mWTvW

https://drive.google.com/open?id=1nR9CPrrPLeFpI3TFPgTvSAiFy_mH3oHW

https://drive.google.com/open?id=1YeFlx3oisLIPBfnVNiJgRLxyVvA_QT

https://drive.google.com/open?id=1VESYnMNwCQhg6tdxp5VZRZ-5cUXEJYgQ

Veri içeriği

ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/daily/by_year/readme.txt

İstasyonlar

https://drive.google.com/open?id=1vuJrb8xc4c2MK6LMbexaE-j-it38MCKU

Türkiye için 10+ civarı istasyon var.

df = pd.read_csv('ghcnd-stations2.txt',sep='|',header=None)

ile okunabilir.

Ana veri içeriğine bakınca

import zipfile, csv, io
zfile = '2017.zip'
zip_file    = zipfile.ZipFile(zfile)
items_file  = zip_file.open('2017.csv')
items_file  = io.TextIOWrapper(items_file)
rd = csv.reader(items_file)
for row in rd:    
    print (row)

['US1MISW0005', '20170101', 'PRCP', '0', '', '', 'N', '']
['US1MISW0005', '20170101', 'SNOW', '0', '', '', 'N', '']
['US1MISW0005', '20170101', 'SNWD', '0', '', '', 'N', '']
['CA1MB000296', '20170101', 'PRCP', '0', '', '', 'N', '']
['US1MAMD0069', '20170101', 'PRCP', '56', '', '', 'N', '']
['ASN00015643', '20170101', 'TMAX', '274', '', '', 'a', '']
...

şeklinde bir çıktı görülür. İlk kolon istasyon kimliği, 2. gün, sonra öğe. Bu verinin ilk halini isleyen bir kod surada. PRCP 100 üzerinden yağmur seviyesi. TMAX bir günün en yüksek ısısı.

Fikir şudur, günlük seçilmiş birkaç öğe için, bir tahmin noktası (bir şehir olabilir) etrafında bir izgara (grid) yaratılır, 20x20 boyutunda diyelim, ızgara köşelerinin kordinatlarına en yakın istasyon verisi öğeler için toplanır. Bir günde diyelim TMAX, SNOW, vs. iki öğe bir tensor içinde iki boyut olur, aynen R, G, B kanallarının bir resmin farklı tensor katmanı, boyutu olması gibi.

Üstteki resim orijinal makaledeki katmanları gösteriyor, makale farklı atmosfer seviyelerindeki basıncı kullanmış.

İstasyon verisi öğeler için kat kat konur ve tensor yaratılır, bu bir gün. Kaynak verisi bu, ertesi günün PRCP öğesi tahmin hedefi, ve (2 boyutlu) evrişimsel ağ işletilir. Zaman faktörü için makalede arkadaşın yaptığı gibi önceki günlerin ek tensorları konur ve 3 boyutlu evrişim işletilir.


Yukarı