Skip to content

Commit fce9f8b

Browse files
committed
added field significance
1 parent c8cf135 commit fce9f8b

5 files changed

Lines changed: 215 additions & 61 deletions

Scripts/ANN_EmissionScenarioBinary_v4_ssp_119_245.py

Lines changed: 61 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
lenOfPicks = len(modelGCMs)
6363
allDataLabels = modelGCMs
6464
monthlychoice = 'annual'
65-
variq = 'PRECT'
65+
variq = 'T2M'
6666
reg_name = 'Globe'
6767
level = 'surface'
6868
###############################################################################
@@ -338,30 +338,30 @@ def loadmodel(Xtrain,Xval,Ytrain,Yval,hidden,random_network_seed,n_epochs,batch_
338338
savename = 'ANNv4_EmissionScenarioBinary_ssp_119-245_' + variq + '_' + reg_name + '_' + monthlychoice + '_' + actFun + '_L2_'+ str(ridgePenalty)+ '_LR_' + str(lr_here)+ '_Batch'+ str(batch_size)+ '_Iters' + str(n_epochs) + '_' + str(len(hidden)) + 'x' + str(hidden[0]) + '_SegSeed' + str(random_segment_seed) + '_NetSeed'+ str(random_network_seed)
339339

340340
modelwrite = dirname + savename + '.h5'
341-
model.save_weights(modelwrite)
342-
np.savez(dirname + savename + '.npz',trainModels=trainIndices,testModels=testIndices,Xtrain=Xtrain,Ytrain=Ytrain,Xtest=Xtest,Ytest=Ytest,Xmean=Xmean,Xstd=Xstd,lats=lats,lons=lons)
341+
# model.save_weights(modelwrite)
342+
# np.savez(dirname + savename + '.npz',trainModels=trainIndices,testModels=testIndices,Xtrain=Xtrain,Ytrain=Ytrain,Xtest=Xtest,Ytest=Ytest,Xmean=Xmean,Xstd=Xstd,lats=lats,lons=lons)
343343

344344
###############################################################################
345345
###############################################################################
346346
###############################################################################
347347
### Training/testing for saving output
348-
np.savetxt(directoryoutput + 'trainingEnsIndices_' + savename + '.txt',trainIndices)
349-
np.savetxt(directoryoutput + 'testingEnsIndices_' + savename + '.txt',testIndices)
350-
np.savetxt(directoryoutput + 'validationEnsIndices_' + savename + '.txt',valIndices)
348+
# np.savetxt(directoryoutput + 'trainingEnsIndices_' + savename + '.txt',trainIndices)
349+
# np.savetxt(directoryoutput + 'testingEnsIndices_' + savename + '.txt',testIndices)
350+
# np.savetxt(directoryoutput + 'validationEnsIndices_' + savename + '.txt',valIndices)
351351

352-
np.savetxt(directoryoutput + 'trainingTrueLabels_' + savename + '.txt',actual_classtrain)
353-
np.savetxt(directoryoutput + 'testingTrueLabels_' + savename + '.txt',actual_classtest)
354-
np.savetxt(directoryoutput + 'validationTrueLabels_' + savename + '.txt',actual_classval)
352+
# np.savetxt(directoryoutput + 'trainingTrueLabels_' + savename + '.txt',actual_classtrain)
353+
# np.savetxt(directoryoutput + 'testingTrueLabels_' + savename + '.txt',actual_classtest)
354+
# np.savetxt(directoryoutput + 'validationTrueLabels_' + savename + '.txt',actual_classval)
355355

356-
np.savetxt(directoryoutput + 'trainingPredictedLabels_' + savename + '.txt',ypred_picktrain)
357-
np.savetxt(directoryoutput + 'trainingPredictedConfidence_' + savename+ '.txt',ypred_train)
358-
np.savetxt(directoryoutput + 'testingPredictedLabels_' + savename+ '.txt',ypred_picktest)
359-
np.savetxt(directoryoutput + 'testingPredictedConfidence_' + savename+ '.txt',ypred_test)
360-
np.savetxt(directoryoutput + 'validationPredictedLabels_' + savename+ '.txt',ypred_pickval)
361-
np.savetxt(directoryoutput + 'validationPredictedConfidence_' + savename+ '.txt',ypred_val)
356+
# np.savetxt(directoryoutput + 'trainingPredictedLabels_' + savename + '.txt',ypred_picktrain)
357+
# np.savetxt(directoryoutput + 'trainingPredictedConfidence_' + savename+ '.txt',ypred_train)
358+
# np.savetxt(directoryoutput + 'testingPredictedLabels_' + savename+ '.txt',ypred_picktest)
359+
# np.savetxt(directoryoutput + 'testingPredictedConfidence_' + savename+ '.txt',ypred_test)
360+
# np.savetxt(directoryoutput + 'validationPredictedLabels_' + savename+ '.txt',ypred_pickval)
361+
# np.savetxt(directoryoutput + 'validationPredictedConfidence_' + savename+ '.txt',ypred_val)
362362

363-
np.savetxt(directoryoutput + 'observationsPredictedLabels_' + savename+ '.txt',ypred_pickobs)
364-
np.savez(directoryoutput + 'observationsPredictedConfidence_' + savename+ '.npz',obsconf = ypred_obs,yearsobs = yearsobs)
363+
# np.savetxt(directoryoutput + 'observationsPredictedLabels_' + savename+ '.txt',ypred_pickobs)
364+
# np.savez(directoryoutput + 'observationsPredictedConfidence_' + savename+ '.npz',obsconf = ypred_obs,yearsobs = yearsobs)
365365

366366
###############################################################################
367367
###############################################################################
@@ -376,11 +376,54 @@ def accuracyTotalTime(data_pred,data_true):
376376
accdata_pred = accuracy_score(data_truer,data_predr)
377377

378378
return accdata_pred
379+
def precisionTotalTime(data_pred,data_true):
380+
"""
381+
Compute precision for the entire time series
382+
"""
383+
data_truer = data_true
384+
data_predr = data_pred
385+
precdata_pred = precision_score(data_truer,data_predr,average='macro')
386+
387+
return precdata_pred
388+
def recallTotalTime(data_pred,data_true):
389+
"""
390+
Compute recall for the entire time series
391+
"""
392+
data_truer = data_true
393+
data_predr = data_pred
394+
recalldata_pred = recall_score(data_truer,data_predr,average='macro')
395+
396+
return recalldata_pred
397+
def f1TotalTime(data_pred,data_true):
398+
"""
399+
Compute f1 for the entire time series
400+
"""
401+
data_truer = data_true
402+
data_predr = data_pred
403+
f1data_pred = f1_score(data_truer,data_predr,average='macro')
404+
405+
return f1data_pred
379406

380407
acctrain = accuracyTotalTime(ypred_picktrain,actual_classtrain)
381408
acctest = accuracyTotalTime(ypred_picktest,actual_classtest)
382409
accval = accuracyTotalTime(ypred_pickval,actual_classval)
383410
print(acctrain,accval,acctest)
411+
print(variq)
412+
413+
prectrain = precisionTotalTime(ypred_picktrain,actual_classtrain)
414+
prectest = precisionTotalTime(ypred_picktest,actual_classtest)
415+
precval = precisionTotalTime(ypred_pickval,actual_classval)
416+
417+
recalltrain = recallTotalTime(ypred_picktrain,actual_classtrain)
418+
recalltest = recallTotalTime(ypred_picktest,actual_classtest)
419+
recallval = recallTotalTime(ypred_pickval,actual_classval)
420+
421+
f1_train = f1TotalTime(ypred_picktrain,actual_classtrain)
422+
f1_test = f1TotalTime(ypred_picktest,actual_classtest)
423+
f1_val = f1TotalTime(ypred_pickval,actual_classval)
424+
425+
print(prectest,recalltest,f1_test)
426+
print(variq)
384427

385428
plt.figure()
386429
cm = confusion_matrix(actual_classtest,ypred_picktest)
@@ -407,7 +450,7 @@ def accuracyTotalTime(data_pred,data_true):
407450
spatialmean_modmean = np.nanmean(spatialmean_mod,axis=1)
408451
plt.figure()
409452
plt.plot(spatialmean_modmean.transpose())
410-
453+
sys.exit()
411454
##############################################################################
412455
##############################################################################
413456
##############################################################################

Scripts/ANN_EmissionScenarioBinary_v4_ssp_245_585.py

Lines changed: 60 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -338,30 +338,30 @@ def loadmodel(Xtrain,Xval,Ytrain,Yval,hidden,random_network_seed,n_epochs,batch_
338338
savename = 'ANNv4_EmissionScenarioBinary_ssp_245-585_' + variq + '_' + reg_name + '_' + monthlychoice + '_' + actFun + '_L2_'+ str(ridgePenalty)+ '_LR_' + str(lr_here)+ '_Batch'+ str(batch_size)+ '_Iters' + str(n_epochs) + '_' + str(len(hidden)) + 'x' + str(hidden[0]) + '_SegSeed' + str(random_segment_seed) + '_NetSeed'+ str(random_network_seed)
339339

340340
modelwrite = dirname + savename + '.h5'
341-
model.save_weights(modelwrite)
342-
np.savez(dirname + savename + '.npz',trainModels=trainIndices,testModels=testIndices,Xtrain=Xtrain,Ytrain=Ytrain,Xtest=Xtest,Ytest=Ytest,Xmean=Xmean,Xstd=Xstd,lats=lats,lons=lons)
341+
# model.save_weights(modelwrite)
342+
# np.savez(dirname + savename + '.npz',trainModels=trainIndices,testModels=testIndices,Xtrain=Xtrain,Ytrain=Ytrain,Xtest=Xtest,Ytest=Ytest,Xmean=Xmean,Xstd=Xstd,lats=lats,lons=lons)
343343

344344
###############################################################################
345345
###############################################################################
346346
###############################################################################
347347
### Training/testing for saving output
348-
np.savetxt(directoryoutput + 'trainingEnsIndices_' + savename + '.txt',trainIndices)
349-
np.savetxt(directoryoutput + 'testingEnsIndices_' + savename + '.txt',testIndices)
350-
np.savetxt(directoryoutput + 'validationEnsIndices_' + savename + '.txt',valIndices)
348+
# np.savetxt(directoryoutput + 'trainingEnsIndices_' + savename + '.txt',trainIndices)
349+
# np.savetxt(directoryoutput + 'testingEnsIndices_' + savename + '.txt',testIndices)
350+
# np.savetxt(directoryoutput + 'validationEnsIndices_' + savename + '.txt',valIndices)
351351

352-
np.savetxt(directoryoutput + 'trainingTrueLabels_' + savename + '.txt',actual_classtrain)
353-
np.savetxt(directoryoutput + 'testingTrueLabels_' + savename + '.txt',actual_classtest)
354-
np.savetxt(directoryoutput + 'validationTrueLabels_' + savename + '.txt',actual_classval)
352+
# np.savetxt(directoryoutput + 'trainingTrueLabels_' + savename + '.txt',actual_classtrain)
353+
# np.savetxt(directoryoutput + 'testingTrueLabels_' + savename + '.txt',actual_classtest)
354+
# np.savetxt(directoryoutput + 'validationTrueLabels_' + savename + '.txt',actual_classval)
355355

356-
np.savetxt(directoryoutput + 'trainingPredictedLabels_' + savename + '.txt',ypred_picktrain)
357-
np.savetxt(directoryoutput + 'trainingPredictedConfidence_' + savename+ '.txt',ypred_train)
358-
np.savetxt(directoryoutput + 'testingPredictedLabels_' + savename+ '.txt',ypred_picktest)
359-
np.savetxt(directoryoutput + 'testingPredictedConfidence_' + savename+ '.txt',ypred_test)
360-
np.savetxt(directoryoutput + 'validationPredictedLabels_' + savename+ '.txt',ypred_pickval)
361-
np.savetxt(directoryoutput + 'validationPredictedConfidence_' + savename+ '.txt',ypred_val)
356+
# np.savetxt(directoryoutput + 'trainingPredictedLabels_' + savename + '.txt',ypred_picktrain)
357+
# np.savetxt(directoryoutput + 'trainingPredictedConfidence_' + savename+ '.txt',ypred_train)
358+
# np.savetxt(directoryoutput + 'testingPredictedLabels_' + savename+ '.txt',ypred_picktest)
359+
# np.savetxt(directoryoutput + 'testingPredictedConfidence_' + savename+ '.txt',ypred_test)
360+
# np.savetxt(directoryoutput + 'validationPredictedLabels_' + savename+ '.txt',ypred_pickval)
361+
# np.savetxt(directoryoutput + 'validationPredictedConfidence_' + savename+ '.txt',ypred_val)
362362

363-
np.savetxt(directoryoutput + 'observationsPredictedLabels_' + savename+ '.txt',ypred_pickobs)
364-
np.savez(directoryoutput + 'observationsPredictedConfidence_' + savename+ '.npz',obsconf = ypred_obs,yearsobs = yearsobs)
363+
# np.savetxt(directoryoutput + 'observationsPredictedLabels_' + savename+ '.txt',ypred_pickobs)
364+
# np.savez(directoryoutput + 'observationsPredictedConfidence_' + savename+ '.npz',obsconf = ypred_obs,yearsobs = yearsobs)
365365

366366
###############################################################################
367367
###############################################################################
@@ -376,11 +376,54 @@ def accuracyTotalTime(data_pred,data_true):
376376
accdata_pred = accuracy_score(data_truer,data_predr)
377377

378378
return accdata_pred
379+
def precisionTotalTime(data_pred,data_true):
380+
"""
381+
Compute precision for the entire time series
382+
"""
383+
data_truer = data_true
384+
data_predr = data_pred
385+
precdata_pred = precision_score(data_truer,data_predr,average='macro')
386+
387+
return precdata_pred
388+
def recallTotalTime(data_pred,data_true):
389+
"""
390+
Compute recall for the entire time series
391+
"""
392+
data_truer = data_true
393+
data_predr = data_pred
394+
recalldata_pred = recall_score(data_truer,data_predr,average='macro')
395+
396+
return recalldata_pred
397+
def f1TotalTime(data_pred,data_true):
398+
"""
399+
Compute f1 for the entire time series
400+
"""
401+
data_truer = data_true
402+
data_predr = data_pred
403+
f1data_pred = f1_score(data_truer,data_predr,average='macro')
404+
405+
return f1data_pred
379406

380407
acctrain = accuracyTotalTime(ypred_picktrain,actual_classtrain)
381408
acctest = accuracyTotalTime(ypred_picktest,actual_classtest)
382409
accval = accuracyTotalTime(ypred_pickval,actual_classval)
383410
print(acctrain,accval,acctest)
411+
print(variq)
412+
413+
prectrain = precisionTotalTime(ypred_picktrain,actual_classtrain)
414+
prectest = precisionTotalTime(ypred_picktest,actual_classtest)
415+
precval = precisionTotalTime(ypred_pickval,actual_classval)
416+
417+
recalltrain = recallTotalTime(ypred_picktrain,actual_classtrain)
418+
recalltest = recallTotalTime(ypred_picktest,actual_classtest)
419+
recallval = recallTotalTime(ypred_pickval,actual_classval)
420+
421+
f1_train = f1TotalTime(ypred_picktrain,actual_classtrain)
422+
f1_test = f1TotalTime(ypred_picktest,actual_classtest)
423+
f1_val = f1TotalTime(ypred_pickval,actual_classval)
424+
425+
print(prectest,recalltest,f1_test)
426+
print(variq)
384427

385428
plt.figure()
386429
cm = confusion_matrix(actual_classtest,ypred_picktest)
@@ -407,7 +450,7 @@ def accuracyTotalTime(data_pred,data_true):
407450
spatialmean_modmean = np.nanmean(spatialmean_mod,axis=1)
408451
plt.figure()
409452
plt.plot(spatialmean_modmean.transpose())
410-
453+
sys.exit()
411454
##############################################################################
412455
##############################################################################
413456
##############################################################################

Scripts/LogReg_EmissionScenario_GMST.py

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -143,16 +143,28 @@ def read_primary_dataset(variq,dataset,monthlychoice,scenario,lat_bounds,lon_bou
143143
random_segment_seed = 71541
144144
random_network_seed = 87750
145145

146-
hidden = [30,30,30]
147-
n_epochs = 1500
148-
batch_size = 128
149-
lr_here = 0.0001
150-
ridgePenalty = 0.1
151-
actFun = 'relu'
146+
### Model paramaters for the same ANN equivalent
147+
if variq == 'T2M':
148+
hidden = [100]
149+
n_epochs = 1500
150+
batch_size = 128
151+
lr_here = 0.0001
152+
ridgePenalty = 0.1
153+
actFun = 'relu'
154+
elif variq == 'PRECT':
155+
hidden = [100]
156+
n_epochs = 1500
157+
batch_size = 128
158+
lr_here = 0.0001
159+
ridgePenalty = 0.1
160+
actFun = 'relu'
161+
else:
162+
print(ValueError('WRONG VARIABLE NOT TUNED YET FOR ANN!'))
163+
sys.exit()
152164

153165
### Read in data for training predictions and actual hiatuses
154166
dirname = '/work/Zachary.Labe/Research/DetectMitigate/Data/'
155-
savename = 'ANNv3_EmissionScenario_' + variq + '_' + reg_name + '_' + monthlychoice + '_' + actFun + '_L2_'+ str(ridgePenalty)+ '_LR_' + str(lr_here)+ '_Batch'+ str(batch_size)+ '_Iters' + str(n_epochs) + '_' + str(len(hidden)) + 'x' + str(hidden[0]) + '_SegSeed' + str(random_segment_seed) + '_NetSeed'+ str(random_network_seed)
167+
savename = 'ANNv4_EmissionScenario_' + variq + '_' + reg_name + '_' + monthlychoice + '_' + actFun + '_L2_'+ str(ridgePenalty)+ '_LR_' + str(lr_here)+ '_Batch'+ str(batch_size)+ '_Iters' + str(n_epochs) + '_' + str(len(hidden)) + 'x' + str(hidden[0]) + '_SegSeed' + str(random_segment_seed) + '_NetSeed'+ str(random_network_seed)
156168

157169
trainindices = np.asarray(np.genfromtxt(dirname + 'trainingEnsIndices_' + savename + '.txt'),dtype=int)
158170

@@ -209,7 +221,6 @@ def loadmodel(Xtrain,Xval,Ytrain,Yval,hidden,random_network_seed,n_epochs,batch_
209221
model = keras.models.Sequential()
210222
tf.random.set_seed(int(np.random.randint(1,100)))
211223

212-
random_network_seed = None
213224
if random_network_seed == None:
214225
np.random.seed(None)
215226
random_network_seed = int(np.random.randint(1, 100000))
@@ -312,10 +323,23 @@ def accuracyTotalTime(data_pred,data_true):
312323

313324
return accdata_pred
314325

326+
def f1TotalTime(data_pred,data_true):
327+
"""
328+
Compute f1 for the entire time series
329+
"""
330+
data_truer = data_true
331+
data_predr = data_pred
332+
f1data_pred = f1_score(data_truer,data_predr,average=None)
333+
334+
return f1data_pred
335+
315336
acctrain = accuracyTotalTime(ypred_picktrain,actual_classtrain)
316337
acctest = accuracyTotalTime(ypred_picktest,actual_classtest)
317338
accval = accuracyTotalTime(ypred_pickval,actual_classval)
318-
print(acctrain,accval,acctest)
339+
340+
f1_train = f1TotalTime(ypred_picktrain,actual_classtrain)
341+
f1_test = f1TotalTime(ypred_picktest,actual_classtest)
342+
f1_val = f1TotalTime(ypred_pickval,actual_classval)
319343

320344
plt.figure()
321345
cm = confusion_matrix(actual_classtest,ypred_picktest)
@@ -340,3 +364,6 @@ def accuracyTotalTime(data_pred,data_true):
340364
os_pick = np.argmax(os_predict,axis=1)
341365
os_10ye_predict = model.predict(osdata_10yeS)
342366
os_10ye_pick = np.argmax(os_10ye_predict,axis=1)
367+
368+
print('\n',acctrain,accval,acctest)
369+
print('\n',f1_test)

0 commit comments

Comments
 (0)