import itstgcntry
import torch
import itstgcntry.planner Adding the RecurrentGCN models
RecurrentGCN
  RecurrentGCN
Import
Try
import pandas as pdpd.read_csv('./simulation_results/2023-05-29_11-18-32.csv').groupby(['RecurrentGCN','method','mrate'])['mse'].mean().reset_index()| RecurrentGCN | method | mrate | mse | |
|---|---|---|---|---|
| 0 | DCRNN | IT-STGCN | 0.8 | 1.517346 | 
| 1 | DCRNN | STGCN | 0.8 | 1.521906 | 
| 2 | EvolveGCNH | IT-STGCN | 0.8 | 1.338225 | 
| 3 | EvolveGCNH | STGCN | 0.8 | 1.337022 | 
| 4 | EvolveGCNO | IT-STGCN | 0.8 | 1.370455 | 
| 5 | EvolveGCNO | STGCN | 0.8 | 1.326990 | 
| 6 | GCLSTM | IT-STGCN | 0.8 | 1.529536 | 
| 7 | GCLSTM | STGCN | 0.8 | 1.600452 | 
| 8 | GConvGRU | IT-STGCN | 0.8 | 1.567661 | 
| 9 | GConvGRU | STGCN | 0.8 | 1.654162 | 
| 10 | GConvLSTM | IT-STGCN | 0.8 | 1.494284 | 
| 11 | GConvLSTM | STGCN | 0.8 | 1.633645 | 
| 12 | LRGCN | IT-STGCN | 0.8 | 1.512042 | 
| 13 | LRGCN | STGCN | 0.8 | 1.604186 | 
| 14 | MPNNLSTM | IT-STGCN | 0.8 | 1.386678 | 
| 15 | MPNNLSTM | STGCN | 0.8 | 1.351526 | 
| 16 | TGCN | IT-STGCN | 0.8 | 1.279269 | 
| 17 | TGCN | STGCN | 0.8 | 1.278411 | 
pd.read_csv('./simulation_results/2023-05-29_12-31-06.csv').groupby(['RecurrentGCN','method','mrate'])['mse'].mean().reset_index()| RecurrentGCN | method | mrate | mse | |
|---|---|---|---|---|
| 0 | DCRNN | IT-STGCN | 0.6 | 1.457874 | 
| 1 | DCRNN | STGCN | 0.6 | 1.523312 | 
| 2 | EvolveGCNH | IT-STGCN | 0.6 | 1.265695 | 
| 3 | EvolveGCNH | STGCN | 0.6 | 1.290008 | 
| 4 | EvolveGCNO | IT-STGCN | 0.6 | 1.288295 | 
| 5 | EvolveGCNO | STGCN | 0.6 | 1.308886 | 
| 6 | GCLSTM | IT-STGCN | 0.6 | 1.304539 | 
| 7 | GCLSTM | STGCN | 0.6 | 1.537681 | 
| 8 | GConvGRU | IT-STGCN | 0.6 | 1.402607 | 
| 9 | GConvGRU | STGCN | 0.6 | 1.582745 | 
| 10 | GConvLSTM | IT-STGCN | 0.6 | 1.299263 | 
| 11 | GConvLSTM | STGCN | 0.6 | 1.534498 | 
| 12 | LRGCN | IT-STGCN | 0.6 | 1.295239 | 
| 13 | LRGCN | STGCN | 0.6 | 1.527917 | 
| 14 | MPNNLSTM | IT-STGCN | 0.6 | 1.287649 | 
| 15 | MPNNLSTM | STGCN | 0.6 | 1.307589 | 
| 16 | TGCN | IT-STGCN | 0.6 | 1.276318 | 
| 17 | TGCN | STGCN | 0.6 | 1.262256 | 
GConvGRU
data_dict = itstgcntry.load_data('./data/fivenodes.pkl')
loader = itstgcntry.DatasetLoader(data_dict)dataset = loader.get_dataset(lags=2)
train_dataset, test_dataset = itstgcntry.temporal_signal_split(dataset, train_ratio=0.8)mindex = [list(range(10,100)),[],list(range(50,80)),[],[]]
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='block')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)/home/csy/Dropbox/blog/posts/GCN/itstgcntry/utils.py:72: UserWarning: Creating a tensor from a list of numpy.ndarrays is extremely slow. Please consider converting the list to a single numpy.ndarray with numpy.array() before converting to a tensor. (Triggered internally at /opt/conda/conda-bld/pytorch_1682343998658/work/torch/csrc/utils/tensor_new.cpp:245.)
  lags = torch.tensor(train_dataset.features).shape[-1]
mindex = itstgcntry.rand_mindex(train_dataset,mrate=0.5)
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='rand')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)- 학습
lrnr = itstgcntry.StgcnLearner(train_dataset_padded)model = itstgcntry.GConvGRU_RecurrentGCN(train_dataset_padded,filters=1)lrnr.learn(model,epoch=5)5/5
lrnr1 = itstgcntry.ITStgcnLearner(train_dataset_padded)model1 = itstgcntry.GConvGRU_RecurrentGCN(train_dataset_padded,filters=1)lrnr1.learn(model1,epoch=5)5/5
- 적합값
# lrnr(train_dataset_padded) 
# lrnr(test_dataset)['yhat'].shape- 실행하면 X,y,yhat 출력
 
- 모형 평가 및 시각화
evtor = itstgcntry.Evaluator(lrnr,train_dataset_padded,test_dataset)fig = evtor.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
evtor1 = itstgcntry.Evaluator(lrnr1,train_dataset_padded,test_dataset)fig = evtor1.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
DCRNN
data_dict = itstgcntry.load_data('./data/fivenodes.pkl')
loader = itstgcntry.DatasetLoader(data_dict)dataset = loader.get_dataset(lags=2)
train_dataset, test_dataset = itstgcntry.temporal_signal_split(dataset, train_ratio=0.8)mindex = [list(range(10,100)),[],list(range(50,80)),[],[]]
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='block')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)mindex = itstgcntry.rand_mindex(train_dataset,mrate=0.5)
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='rand')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)- 학습
lrnr = itstgcntry.StgcnLearner(train_dataset_padded)model = itstgcntry.DCRNN_RecurrentGCN(train_dataset_padded,filters=1)lrnr.learn(model,epoch=50)50/50
lrnr1 = itstgcntry.ITStgcnLearner(train_dataset_padded)model1 = itstgcntry.DCRNN_RecurrentGCN(train_dataset_padded,filters=1)lrnr1.learn(model1,epoch=50)50/50
- 적합값
# lrnr(train_dataset_padded) 
# lrnr(test_dataset)['yhat'].shape- 실행하면 X,y,yhat 출력
 
- 모형 평가 및 시각화
evtor = itstgcntry.Evaluator(lrnr,train_dataset_padded,test_dataset)fig = evtor.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
evtor1 = itstgcntry.Evaluator(lrnr1,train_dataset_padded,test_dataset)fig = evtor1.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
EvolveGCNH
data_dict = itstgcntry.load_data('./data/fivenodes.pkl')
loader = itstgcntry.DatasetLoader(data_dict)dataset = loader.get_dataset(lags=2)
train_dataset, test_dataset = itstgcntry.temporal_signal_split(dataset, train_ratio=0.8)mindex = [list(range(10,100)),[],list(range(50,80)),[],[]]
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='block')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)mindex = itstgcntry.rand_mindex(train_dataset,mrate=0.5)
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='rand')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)- 학습
lrnr = itstgcntry.StgcnLearner(train_dataset_padded)model = itstgcntry.EvolveGCNH_RecurrentGCN(train_dataset_padded)lrnr.learn(model,epoch=50)50/50
lrnr1 = itstgcntry.ITStgcnLearner(train_dataset_padded)model1 = itstgcntry.EvolveGCNH_RecurrentGCN(train_dataset_padded)lrnr1.learn(model1,epoch=50)50/50
- 적합값
# lrnr(train_dataset_padded) 
# lrnr(test_dataset)['yhat'].shape- 실행하면 X,y,yhat 출력
 
- 모형 평가 및 시각화
evtor = itstgcntry.Evaluator(lrnr,train_dataset_padded,test_dataset)fig = evtor.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
evtor1 = itstgcntry.Evaluator(lrnr1,train_dataset_padded,test_dataset)fig = evtor1.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
EvolveGCNO
data_dict = itstgcntry.load_data('./data/fivenodes.pkl')
loader = itstgcntry.DatasetLoader(data_dict)dataset = loader.get_dataset(lags=2)
train_dataset, test_dataset = itstgcntry.temporal_signal_split(dataset, train_ratio=0.8)mindex = [list(range(10,100)),[],list(range(50,80)),[],[]]
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='block')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)mindex = itstgcntry.rand_mindex(train_dataset,mrate=0.5)
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='rand')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)- 학습
lrnr = itstgcntry.StgcnLearner(train_dataset_padded)model = itstgcntry.EvolveGCNO_RecurrentGCN(train_dataset_padded)lrnr.learn(model,epoch=50)50/50
lrnr1 = itstgcntry.ITStgcnLearner(train_dataset_padded)model1 = itstgcntry.EvolveGCNO_RecurrentGCN(train_dataset_padded)lrnr1.learn(model1,epoch=50)50/50
- 적합값
# lrnr(train_dataset_padded) 
# lrnr(test_dataset)['yhat'].shape- 실행하면 X,y,yhat 출력
 
- 모형 평가 및 시각화
evtor = itstgcntry.Evaluator(lrnr,train_dataset_padded,test_dataset)fig = evtor.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
evtor1 = itstgcntry.Evaluator(lrnr1,train_dataset_padded,test_dataset)fig = evtor1.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
GCLSTM
data_dict = itstgcntry.load_data('./data/fivenodes.pkl')
loader = itstgcntry.DatasetLoader(data_dict)dataset = loader.get_dataset(lags=2)
train_dataset, test_dataset = itstgcntry.temporal_signal_split(dataset, train_ratio=0.8)mindex = [list(range(10,100)),[],list(range(50,80)),[],[]]
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='block')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)mindex = itstgcntry.rand_mindex(train_dataset,mrate=0.5)
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='rand')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)- 학습
lrnr = itstgcntry.StgcnLearner(train_dataset_padded)model = itstgcntry.GCLSTM_RecurrentGCN(train_dataset_padded, filters=1)lrnr.learn(model,epoch=50)50/50
lrnr1 = itstgcntry.ITStgcnLearner(train_dataset_padded)model1 = itstgcntry.GCLSTM_RecurrentGCN(train_dataset_padded, filters=1)lrnr1.learn(model1,epoch=50)50/50
- 적합값
# lrnr(train_dataset_padded) 
# lrnr(test_dataset)['yhat'].shape- 실행하면 X,y,yhat 출력
 
- 모형 평가 및 시각화
evtor = itstgcntry.Evaluator(lrnr,train_dataset_padded,test_dataset)fig = evtor.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
evtor1 = itstgcntry.Evaluator(lrnr1,train_dataset_padded,test_dataset)fig = evtor1.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
GConvLSTM
data_dict = itstgcntry.load_data('./data/fivenodes.pkl')
loader = itstgcntry.DatasetLoader(data_dict)dataset = loader.get_dataset(lags=2)
train_dataset, test_dataset = itstgcntry.temporal_signal_split(dataset, train_ratio=0.8)mindex = [list(range(10,100)),[],list(range(50,80)),[],[]]
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='block')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)mindex = itstgcntry.rand_mindex(train_dataset,mrate=0.5)
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='rand')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)- 학습
lrnr = itstgcntry.StgcnLearner(train_dataset_padded)model = itstgcntry.GConvLSTM_RecurrentGCN(train_dataset_padded, filters=1)lrnr.learn(model,epoch=50)50/50
lrnr1 = itstgcntry.ITStgcnLearner(train_dataset_padded)model1 = itstgcntry.GConvLSTM_RecurrentGCN(train_dataset_padded, filters=1)lrnr1.learn(model1,epoch=50)50/50
- 적합값
# lrnr(train_dataset_padded) 
# lrnr(test_dataset)['yhat'].shape- 실행하면 X,y,yhat 출력
 
- 모형 평가 및 시각화
evtor = itstgcntry.Evaluator(lrnr,train_dataset_padded,test_dataset)fig = evtor.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
evtor1 = itstgcntry.Evaluator(lrnr1,train_dataset_padded,test_dataset)fig = evtor1.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
LRGCN
data_dict = itstgcntry.load_data('./data/fivenodes.pkl')
loader = itstgcntry.DatasetLoader(data_dict)dataset = loader.get_dataset(lags=2)
train_dataset, test_dataset = itstgcntry.temporal_signal_split(dataset, train_ratio=0.8)mindex = [list(range(10,100)),[],list(range(50,80)),[],[]]
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='block')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)mindex = itstgcntry.rand_mindex(train_dataset,mrate=0.5)
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='rand')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)- 학습
lrnr = itstgcntry.StgcnLearner(train_dataset_padded)model = itstgcntry.LRGCN_RecurrentGCN(train_dataset_padded, filters=1)lrnr.learn(model,epoch=50)50/50
lrnr1 = itstgcntry.ITStgcnLearner(train_dataset_padded)model1 = itstgcntry.LRGCN_RecurrentGCN(train_dataset_padded, filters=1)lrnr1.learn(model1,epoch=50)50/50
- 적합값
# lrnr(train_dataset_padded) 
# lrnr(test_dataset)['yhat'].shape- 실행하면 X,y,yhat 출력
 
- 모형 평가 및 시각화
evtor = itstgcntry.Evaluator(lrnr,train_dataset_padded,test_dataset)fig = evtor.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
evtor1 = itstgcntry.Evaluator(lrnr1,train_dataset_padded,test_dataset)fig = evtor1.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
MPNNLSTM
data_dict = itstgcntry.load_data('./data/fivenodes.pkl')
loader = itstgcntry.DatasetLoader(data_dict)dataset = loader.get_dataset(lags=2)
train_dataset, test_dataset = itstgcntry.temporal_signal_split(dataset, train_ratio=0.8)mindex = [list(range(10,100)),[],list(range(50,80)),[],[]]
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='block')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)mindex = itstgcntry.rand_mindex(train_dataset,mrate=0.5)
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='rand')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)- 학습
lrnr = itstgcntry.StgcnLearner(train_dataset_padded)model = itstgcntry.MPNNLSTM_RecurrentGCN(train_dataset_padded, filters=1)lrnr.learn(model,epoch=50)50/50
lrnr1 = itstgcntry.ITStgcnLearner(train_dataset_padded)model1 = itstgcntry.MPNNLSTM_RecurrentGCN(train_dataset_padded, filters=1)lrnr1.learn(model1,epoch=50)50/50
- 적합값
# lrnr(train_dataset_padded) 
# lrnr(test_dataset)['yhat'].shape- 실행하면 X,y,yhat 출력
 
- 모형 평가 및 시각화
evtor = itstgcntry.Evaluator(lrnr,train_dataset_padded,test_dataset)fig = evtor.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
evtor1 = itstgcntry.Evaluator(lrnr1,train_dataset_padded,test_dataset)fig = evtor1.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
TGCN
data_dict = itstgcntry.load_data('./data/fivenodes.pkl')
loader = itstgcntry.DatasetLoader(data_dict)dataset = loader.get_dataset(lags=2)
train_dataset, test_dataset = itstgcntry.temporal_signal_split(dataset, train_ratio=0.8)mindex = [list(range(10,100)),[],list(range(50,80)),[],[]]
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='block')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)mindex = itstgcntry.rand_mindex(train_dataset,mrate=0.5)
train_dataset_miss = itstgcntry.miss(train_dataset,mindex,mtype='rand')
train_dataset_padded = itstgcntry.padding(train_dataset_miss) # padding(train_dataset_miss,method='linear'와 같음)- 학습
lrnr = itstgcntry.StgcnLearner(train_dataset_padded)model = itstgcntry.TGCN_RecurrentGCN(train_dataset_padded, filters=32)lrnr.learn(model,epoch=50)50/50
lrnr1 = itstgcntry.ITStgcnLearner(train_dataset_padded)model1 = itstgcntry.TGCN_RecurrentGCN(train_dataset_padded, filters=32)lrnr1.learn(model1,epoch=50)50/50
- 적합값
# lrnr(train_dataset_padded) 
# lrnr(test_dataset)['yhat'].shape- 실행하면 X,y,yhat 출력
 
- 모형 평가 및 시각화
evtor = itstgcntry.Evaluator(lrnr,train_dataset_padded,test_dataset)fig = evtor.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig
evtor1 = itstgcntry.Evaluator(lrnr1,train_dataset_padded,test_dataset)fig = evtor1.plot('--.',h=5,max_node=3,label='complete data',alpha=0.5) # max_nodes 는 1보다 커야함
fig.set_figwidth(12)
fig.set_figheight(12)
fig.tight_layout()
fig