├── main.py ├── data_prepare.py ├── model.py ├── README.md └── data_set.py /main.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import tensorflow as tf 4 | from data_set import data_set_dict 5 | from data_prepare import get_data 6 | from model import Net 7 | import shutil 8 | 9 | tf.logging.set_verbosity(tf.logging.INFO) 10 | path = 'E:\\tsproject\\t_data' 11 | data_name = 'Adiac' 12 | data_set = data_set_dict[data_name] 13 | retrain = False 14 | learning_rate = 0.0001 15 | batch_size = 4 16 | steps = data_set.train_size*3 17 | 18 | def main(_): 19 | train_set = [path + '\\' + data_name + '\\' + data_name+'_TRAIN'] 20 | test_set = [path + '\\' + data_name + '\\' + data_name+'_TEST'] 21 | model_url = path + '\\'+'cnn' + '\\' + data_name+'\\' 22 | best = 0.0 23 | data,label = get_data(train_set, data_set.length, data_set.classes_num, 24 | batch_size,False) 25 | 26 | if retrain: 27 | shutil.rmtree(model_url) 28 | 29 | model = Net() 30 | 31 | hps = { 32 | 'learning_rate': learning_rate, 33 | } 34 | 35 | estimator = tf.estimator.Estimator(model.model_fn, model_url, params=hps) 36 | logging_hook = tf.train.LoggingTensorHook({}, every_n_iter=100, at_end=True) 37 | 38 | for i in range(125): 39 | estimator.train( 40 | lambda: get_data(train_set, data_set.length, data_set.classes_num, 41 | batch_size,True), 42 | [logging_hook], 43 | steps=steps) 44 | 45 | result= estimator.evaluate( 46 | lambda: get_data(test_set, data_set.length, data_set.classes_num, 47 | data_set.test_size, False), 48 | steps=1) 49 | 50 | if best < result['accuracy']: 51 | best= result['accuracy'] 52 | print('The best accuracy is',best) 53 | print('The best error is',1-best) 54 | 55 | if __name__ == '__main__': 56 | tf.app.run() 57 | -------------------------------------------------------------------------------- /data_prepare.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import tensorflow as tf 4 | import math 5 | 6 | def get_data(filenames,data_len,class_num,batch_size,shuffle): 7 | length = data_len+1 8 | file_queue = tf.train.string_input_producer(filenames) 9 | reader = tf.TextLineReader() 10 | _, value = reader.read(file_queue) 11 | record_defaults = [[1.0]] * length 12 | data = tf.decode_csv(value, record_defaults) 13 | 14 | #label should minus one since one_hot function start from 0 15 | label = data[0:1] 16 | label = tf.stack(label) 17 | label= tf.cast(label, tf.int32)-1 18 | 19 | dataset = data[1:length] 20 | dataset = tf.stack(dataset) 21 | dataset = tf.transpose(dataset) 22 | dataset = tf.reshape(dataset, [(length-1),1]) 23 | dataset= tf.cast(dataset, tf.float32) 24 | 25 | if shuffle: 26 | data_batch,label_batch = tf.train.shuffle_batch([dataset,label], 27 | batch_size=batch_size, 28 | capacity=10*batch_size, 29 | min_after_dequeue=4*batch_size) 30 | else: 31 | 32 | data_batch,label_batch = tf.train.batch([dataset,label], 33 | batch_size=batch_size, 34 | capacity=10*batch_size) 35 | 36 | 37 | label_batch = tf.one_hot(label_batch, depth=class_num) 38 | label_batch = tf.cast(label_batch, dtype=tf.int32) 39 | label_batch = tf.reshape(label_batch, [batch_size, class_num]) 40 | 41 | return data_batch,label_batch 42 | -------------------------------------------------------------------------------- /model.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import tensorflow as tf 4 | 5 | class Net: 6 | def __init__(self): 7 | self.__hps = None 8 | self.training = None 9 | self.__regularizer = None 10 | self.__initializer = None 11 | 12 | return 13 | 14 | def model_fn(self, features, labels, mode, params): 15 | self.__hps = params 16 | print(params) 17 | self.training = True if mode == tf.estimator.ModeKeys.TRAIN else False 18 | logits = self.__net(features, labels.get_shape()[1]) 19 | 20 | predictions = { 21 | 'classes': tf.argmax(logits, 1), 22 | 'probabilities': tf.nn.softmax(logits, name='softmax_tensor') 23 | } 24 | 25 | if mode == tf.estimator.ModeKeys.PREDICT: 26 | return tf.estimator.EstimatorSpec(mode, predictions) 27 | 28 | loss = tf.losses.softmax_cross_entropy(labels, logits) 29 | 30 | if mode == tf.estimator.ModeKeys.TRAIN: 31 | optimizer = tf.train.AdamOptimizer( 32 | self.__hps['learning_rate']) 33 | update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS) 34 | with tf.control_dependencies(update_ops): 35 | train_op = optimizer.minimize(loss, tf.train.get_global_step()) 36 | return tf.estimator.EstimatorSpec( 37 | mode, loss=loss, train_op=train_op) 38 | 39 | return tf.estimator.EstimatorSpec( 40 | mode, 41 | predictions=predictions, 42 | loss=loss, 43 | eval_metric_ops={ 44 | 'accuracy':tf.metrics.accuracy( tf.argmax(labels, 1), predictions['classes']) 45 | }) 46 | 47 | 48 | def __MACNN_block(self, x , kernels,reduce=16): 49 | cov1 = tf.layers.conv1d(x, kernels, 3,padding='same') 50 | 51 | cov2 = tf.layers.conv1d(x, kernels, 6,padding='same') 52 | 53 | cov3 = tf.layers.conv1d(x, kernels, 12, padding='same') 54 | 55 | x = tf.concat([cov1,cov2,cov3], 2) 56 | x = tf.layers.batch_normalization(x, training=self.training) 57 | x = tf.nn.relu(x) 58 | y = tf.reduce_mean(x, 1) 59 | y = tf.layers.dense(y, units=int(kernels*3/reduce), use_bias=False, activation=tf.nn.relu) 60 | y = tf.layers.dense(y, units=kernels*3, use_bias=False, activation=tf.sigmoid) 61 | y = tf.reshape(y, [-1, 1,kernels*3]) 62 | return x*y 63 | def __MCNN_block(self, x , kernels, reduce=16): 64 | cov1 = tf.layers.conv1d(x, kernels, 3,padding='same') 65 | 66 | cov2 = tf.layers.conv1d(x, kernels, 6,padding='same') 67 | 68 | cov3 = tf.layers.conv1d(x, kernels, 12, padding='same') 69 | 70 | x = tf.concat([cov1,cov2,cov3], 2) 71 | x = tf.layers.batch_normalization(x, training=self.training) 72 | x = tf.nn.relu(x) 73 | 74 | return x 75 | 76 | def __SACNN_block(self, x , kernels, reduce=16): 77 | x = tf.layers.conv1d(x, kernels, 3, padding='same') 78 | x = tf.layers.batch_normalization(x, training=self.training) 79 | x = tf.nn.relu(x) 80 | y = tf.reduce_mean(x, 1) 81 | y = tf.layers.dense(y, units=int(kernels/reduce), use_bias=False, activation=tf.nn.relu) 82 | y = tf.layers.dense(y, units=kernels, use_bias=False, activation=tf.sigmoid) 83 | y = tf.reshape(y, [-1, 1,kernels]) 84 | return x*y 85 | 86 | def __stack(self, x , loop_num, kernels, reduce): 87 | for i in range(loop_num): 88 | x = self.__MACNN_block(x, kernels, reduce) 89 | return x 90 | 91 | def __net(self, x, classes_num): 92 | x=self.__stack(x,2 , 64, 16) 93 | x=tf.layers.max_pooling1d(x,3,2,padding='same') 94 | x=self.__stack(x,2 , 128, 16) 95 | x=tf.layers.max_pooling1d(x,3,2,padding='same') 96 | x=self.__stack(x,2 , 256, 16) 97 | 98 | fc = tf.reduce_mean(x, 1) 99 | logits= tf.layers.dense(fc, units=classes_num) 100 | 101 | return logits 102 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MACNN 2 | We investigate a novel end-to-end model based on deep learning named as Multi-scale Attention Convolutional Neural Network (MACNN) to solve the time series classification problem. We first apply the multi-scale convolution to capture different scales of information along the time axis by generating different scales of feature maps. Then an attention mechanism is proposed to enhance useful feature maps and suppress less useful ones by learning the importance of each feature map automatically. 3 | 4 | ## Before Start 5 | To validate the effectiveness of MACNN, we propose two more models for comparison. One is the Single-scale Attention Convolutional Neural Network (SACNN) which has the same architecture with MACNN except for the multi convolutional layers. The other is the Multi-scale Convolutional Neural Network (MCNN) which differs from the architecture of MACNN by removing the attention block. 6 | 7 | We test our approach on 85 datasets from the UCR time series classification archive [[www.timeseriesclassification.com]](http://www.timeseriesclassification.com/). Since the label formats of different datasets is not uniformed, we rectify them by starting from 1. 8 | 9 | We select the following metrics to evaluate the performance of each method: Wins, Arithmetic Mean Ranking (AMR), Geometric Mean Ranking (GMR), and Mean Error (ME). 10 | 11 | ## Classification Results 12 | | | | | | | | | | | 13 | |--------------------------------|-------|--------|-------|-------|---------|----------|---------|-------| 14 | |**Dataset** | **BOSS** | **COTE** | **PROP** | **FCN** | **ResNet** | **SACNN** | **MCNN** | **MACNN**| 15 | |Adiac| 0.251| 0.19| 0.335| 0.143| 0.174| 0.174| 0.151| 0.151| 16 | |ArrowHead| 0.125| 0.123| 0.14| 0.12| 0.183| 0.137 |0.109| 0.109| 17 | |Beef| 0.385| 0.236| 0.468| 0.25| 0.233| 0.067| 0.067| 0.067| 18 | |BeetleFly| 0.052 |0.079| 0.178 |0.05| 0.2| 0| 0 |0| 19 | |BirdChicken| 0.016| 0.059| 0.152| 0.05| 0.1| 0| 0| 0| 20 | |Car| 0.145| 0.101| 0.201| 0.083| 0.067| 0.1| 0.083| 0.067| 21 | |CBF| 0.002| 0.002| 0.007| 0| 0.006| 0.004| 0| 0| 22 | |ChlorineConcentration| 0.34| 0.264 |0.341| 0.157| 0.172| 0.144 |0.107 |0.107| 23 | |CinCECGTorso |0.1 |0.017| 0.054 |0.187| 0.229 |0.158 |0.146| 0.101| 24 | |Coffee| 0.011| 0 |0.011| 0 |0| 0 |0| 0| 25 | |Computers| 0.198 |0.23| 0.268| 0.152| 0.176| 0.167| 0.176| 0.156| 26 | |CricketX| 0.236| 0.186 |0.199| 0.185| 0.179 |0.228 |0.136| 0.133| 27 | |CricketY| 0.251| 0.185 |0.206| 0.208| 0.195 |0.203| 0.133 |0.123| 28 | |CricketZ| 0.224 |0.173| 0.196| 0.187| 0.187| 0.2| 0.121 |0.118| 29 | |DiatomSizeReduction| 0.061 |0.075| 0.054| 0.07| 0.069 |0.016| 0.016 |0.016| 30 | |DistalPhalanxOutlineAgeGroup| 0.186| 0.179| 0.232| 0.165| 0.202| 0.237 |0.216| 0.216| 31 | |DistalPhalanxOutlineCorrect| 0.185 |0.195| 0.232| 0.188| 0.18| 0.174 |0.214| 0.21| 32 | |DistalPhalanxTW| 0.327| 0.307| 0.346| 0.21| 0.26 |0.295| 0.281 |0.28| 33 | |Earthquakes| 0.254| 0.253 |0.265| 0.199| 0.214| 0.23| 0.23| 0.223| 34 | |ECG200 |0.11| 0.127| 0.119| 0.1| 0.13| 0.09 |0.06| 0.06| 35 | |ECG5000 |0.06 |0.054| 0.061| 0.059| 0.069| 0.056| 0.051| 0.051| 36 | |ECGFiveDays| 0.017| 0.014 |0.153| 0.015 |0.045 |0.118| 0 |0| 37 | |ElectricDevices| 0.201| 0.117 |0.169 |0.277 |0.272| 0.293| 0.32| 0.262| 38 | |FaceAll| 0.026 |0.01 |0.024| 0.071| 0.166| 0.036| 0.078| 0.072| 39 | |FaceFour| 0.004| 0.15 |0.121| 0.068| 0.068 |0.068| 0.034| 0.023| 40 | |FacesUCR |0.049| 0.033| 0.052| 0.052| 0.042 |0.041| 0.017| 0.016| 41 | |FiftyWords| 0.298| 0.199 |0.179| 0.321| 0.273| 0.244| 0.136 |0.123| 42 | |Fish| 0.031| 0.038| 0.087 |0.029| 0.011 |0.017| 0.006| 0.006| 43 | |FordA| 0.081 |0.045| 0.249| 0.094| 0.072| 0.06 |0.04 |0.04| 44 | |FordB| 0.089| 0.071| 0.243 |0.117| 0.1| 0.179| 0.136| 0.122| 45 | |GunPoint| 0.006 |0.008| 0.026| 0 |0.007| 0| 0| 0| 46 | |Ham| 0.164 |0.195| 0.237| 0.238| 0.219 |0.257 |0.171| 0.171| 47 | |HandOutlines| 0.097| 0.106 |0.12 |0.224| 0.139| 0.065| 0.049| 0.049| 48 | |Haptics| 0.541 |0.483| 0.549 |0.449 |0.494| 0.523| 0.442| 0.438| 49 | |Herring| 0.395| 0.368 |0.434| 0.297| 0.406 |0.266| 0.313| 0.297| 50 | |InlineSkate| 0.497| 0.474| 0.524 |0.589| 0.635| 0.515| 0.504| 0.5| 51 | |InsectWingbeatSound| 0.49| 0.361| 0.419| 0.598| 0.469 |0.526| 0.347 |0.347| 52 | |ItalyPowerDemand| 0.134 |0.03| 0.049| 0.03| 0.04 |0.028 |0.028| 0.028| 53 | |LargeKitchenAppliances| 0.163| 0.1| 0.184| 0.104| 0.107| 0.083| 0.077|0.075| 54 | |Lightning2 |0.19 |0.215| 0.165 |0.197| 0.246| 0.213| 0.164| 0.164| 55 | |Lightning7| 0.334| 0.201| 0.237| 0.137 |0.164| 0.164| 0.137| 0.123| 56 | |Mallat| 0.051 |0.026| 0.039 |0.02| 0.021| 0.025| 0.018| 0.016| 57 | |Meat |0.02| 0.019| 0.022| 0.033| 0| 0.017 |0.017| 0| 58 | |MedicalImages| 0.285| 0.215| 0.24| 0.208 |0.228| 0.22| 0.221| 0.203| 59 | |MiddlePhalanxOutlineAgeGroup| 0.334| 0.278| 0.391 |0.232| 0.24 |0.39 |0.383 |0.367| 60 | |MiddlePhalanxOutlineCorrect| 0.192| 0.199| 0.218| 0.205| 0.207| 0.155| 0.165| 0.155| 61 | |MiddlePhalanxTW |0.463| 0.413| 0.475| 0.388 |0.393 |0.409| 0.435 |0.396| 62 | |MoteStrain |0.154 |0.098| 0.125| 0.05| 0.105 |0.082| 0.082| 0.082| 63 | |NonInvasiveFetalECGThorax1 |0.159 |0.071| 0.151 |0.039| 0.052| 0.051| 0.043| 0.043| 64 | |NonInvasiveFetalECGThorax2 |0.096| 0.054 |0.086 |0.045| 0.049 |0.047| 0.038| 0.038| 65 | |OliveOil| 0.13| 0.099 |0.121| 0.167 |0.133 |0.133| 0.099 |0.099| 66 | |OSULeaf| 0.033 |0.051| 0.188| 0.012| 0.021| 0.017| 0.017| 0.012| 67 | |PhalangesOutlinesCorrect |0.179 |0.217| 0.22| 0.174| 0.175| 0.146| 0.163 |0.162| 68 | |Phoneme |0.744| 0.638 |0.701| 0.655| 0.676| 0.653 |0.669| 0.651| 69 | |Plane| 0.002 |0 |0 |0| 0 |0 |0| 0| 70 | |ProximalPhalanxOutlineAgeGroup |0.181| 0.152| 0.195 |0.151| 0.151 |0.127| 0.132 |0.127| 71 | |ProximalPhalanxOutlineCorrect |0.133 |0.129| 0.161| 0.1 |0.082| 0.069 |0.065| 0.065| 72 | |ProximalPhalanxTW |0.227 |0.185| 0.241 |0.19| 0.193| 0.2| 0.2 |0.19| 73 | |RefrigerationDevices| 0.215| 0.258 |0.324| 0.467| 0.472| 0.395| 0.4| 0.387| 74 | |ScreenType| 0.414 |0.349 |0.446| 0.333 |0.293| 0.355 |0.368| 0.336| 75 | |ShapeletSim |0| 0.036 |0.173 |0.133| 0 |0.011 |0 |0| 76 | |ShapesAll| 0.091 |0.089 |0.114 |0.102 |0.088| 0.083| 0.063| 0.057| 77 | |SmallKitchenAppliances |0.25| 0.212| 0.297 |0.197| 0.203 |0.192| 0.184| 0.179| 78 | |SonyAIBORobotSurface1| 0.103 |0.101| 0.206 |0.032| 0.015 |0.017| 0.013| 0.013| 79 | |SonyAIBORobotSurface2| 0.112 |0.04 |0.13| 0.038| 0.038| 0.012| 0.032| 0.032| 80 | |StarLightCurves| 0.022 |0.02 |0.059| 0.033 |0.025| 0.022 |0.02| 0.02| 81 | |Strawberry |0.03 |0.037 |0.041 |0.031| 0.042 |0.019| 0.022 |0.019| 82 | |SwedishLeaf| 0.082 |0.033 |0.084 |0.034| 0.042| 0.024 |0.024 |0.024| 83 | |Symbols |0.039 |0.047 |0.043| 0.038| 0.128| 0.014| 0.012| 0.009| 84 | |SyntheticControl |0.032| 0.001 |0.006 |0.01 |0 |0| 0 |0| 85 | |ToeSegmentation1 |0.071 |0.066| 0.212| 0.031| 0.035| 0.009 |0.026| 0.026| 86 | |ToeSegmentation2 |0.04 |0.049| 0.093 |0.085| 0.138| 0.046 |0.054| 0.046| 87 | |Trace |0 |0| 0.004 |0 |0 |0 |0 |0| 88 | |TwoLeadECG| 0.016| 0.018 |0.042| 0 |0 |0.001| 0 |0| 89 | |TwoPatterns |0.009 |0| 0 |0.103| 0 |0.016| 0 |0| 90 | |UWaveAll| 0.056 |0.035 |0.032 |0.174| 0.132| 0.125| 0.053| 0.038| 91 | |UWaveX |0.247 |0.17 |0.195 |0.246| 0.213| 0.2| 0.159 |0.153| 92 | |UWaveY |0.339 |0.234| 0.27 |0.275| 0.332| 0.295| 0.223| 0.211| 93 | |UWaveZ |0.305| 0.241| 0.274 |0.271| 0.245| 0.235| 0.209| 0.205| 94 | |Wafer| 0.001 |0.001| 0.003| 0.003| 0.003| 0 |0 |0| 95 | |Wine| 0.088| 0.097| 0.113 |0.111| 0.204| 0.111| 0.13| 0.111| 96 | |WordSynonyms| 0.341 |0.252| 0.222 |0.42| 0.368| 0.389 |0.238| 0.226| 97 | |Worms |0.265 |0.275 |0.356 |0.331 |0.381 |0.104| 0.13 |0.117| 98 | |WormsTwoClass| 0.19 |0.215| 0.283 |0.271 |0.265| 0.117| 0.169 |0.104| 99 | |Yoga| 0.09 |0.102 |0.115 |0.155| 0.142| 0.1 |0.08 |0.079| 100 | |Wins| 7 |13| 4| 16| 10 |21 |31| 55| 101 | |AMR |5.518 |4.341| 6.529| 4.459| 4.965| 3.765 |2.6 |1.706| 102 | |GMR |4.884| 3.696 |5.961| 3.64 |4.258 |3.056| 2.078| 1.434| 103 | |ME| 0.1666 |0.1421 |0.1882| 0.156 |0.1615| 0.1413| 0.1253| 0.1181| 104 | 105 | 106 | -------------------------------------------------------------------------------- /data_set.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from collections import namedtuple 4 | 5 | Data_set = namedtuple('Data_set',['name','classes_num','train_size','test_size','length']) 6 | 7 | ACSF1 = Data_set(name='ACSF1', classes_num=10, train_size=100, test_size=100, length=1460) 8 | Adiac = Data_set(name='Adiac', classes_num=37, train_size=390, test_size=391, length=176) 9 | AllGestureWiimoteX = Data_set(name='AllGestureWiimoteX', classes_num=10, train_size=300, test_size=700, length=500) 10 | AllGestureWiimoteY = Data_set(name='AllGestureWiimoteY', classes_num=10, train_size=300, test_size=700, length=500) 11 | AllGestureWiimoteZ = Data_set(name='AllGestureWiimoteZ', classes_num=10, train_size=300, test_size=700, length=500) 12 | ArrowHead = Data_set(name='ArrowHead', classes_num=3, train_size=36, test_size=175, length=251) 13 | Beef = Data_set(name='Beef', classes_num=5, train_size=30, test_size=30, length=470) 14 | BeetleFly = Data_set(name='BeetleFly', classes_num=2, train_size=20, test_size=20, length=512) 15 | BirdChicken = Data_set(name='BirdChicken', classes_num=2, train_size=20, test_size=20, length=512) 16 | BME = Data_set(name='BME', classes_num=3, train_size=30, test_size=150, length=128) 17 | Car= Data_set(name='Car', classes_num=4, train_size=60, test_size=60, length=577) 18 | CBF= Data_set(name='CBF', classes_num=3, train_size=30, test_size=900, length=128) 19 | Chinatown= Data_set(name='Chinatown', classes_num=2, train_size=20, test_size=343, length=24) 20 | ChlorineCon= Data_set(name='ChlorineCon', classes_num=3, train_size=467, test_size=3840, length=166) 21 | CinCECGTorso= Data_set(name='CinCECGTorso', classes_num=4, train_size=40, test_size=1380, length=1639) 22 | Coffee= Data_set(name='Coffee', classes_num=2, train_size=28, test_size=28, length=286) 23 | Computers= Data_set(name='Computers', classes_num=2, train_size=250, test_size=250, length=720) 24 | CricketX= Data_set(name='CricketX', classes_num=12, train_size=390, test_size=390, length=300) 25 | CricketY= Data_set(name='CricketY', classes_num=12, train_size=390, test_size=390, length=300) 26 | CricketZ= Data_set(name='CricketZ', classes_num=12, train_size=390, test_size=390, length=300) 27 | Crop= Data_set(name='Crop', classes_num=24, train_size=7200, test_size=16800, length=46) 28 | DiatomSizeR= Data_set(name='DiatomSizeR', classes_num=4, train_size=16, test_size=306, length=345) 29 | DistalPhalanxOutlineAgeGroup= Data_set(name='DistalPhalanxOutlineAgeGroup', classes_num=3, train_size=400, test_size=139, length=80) 30 | DistalPhalanxOutlineCorrect= Data_set(name='DistalPhalanxOutlineCorrect', classes_num=2, train_size=600, test_size=276, length=80) 31 | DistalPhalanxTW= Data_set(name='DistalPhalanxTW', classes_num=6, train_size=400, test_size=139, length=80) 32 | DodgerLoopDay= Data_set(name='DodgerLoopDay', classes_num=7, train_size=78, test_size=80, length=288) 33 | DodgerLoopGame= Data_set(name='DodgerLoopGame', classes_num=2, train_size=20, test_size=138, length=288) 34 | DodgerLoopWeekend= Data_set(name='DodgerLoopWeekend', classes_num=2, train_size=20, test_size=138, length=288) 35 | Earthquakes= Data_set(name='Earthquakes', classes_num=2, train_size=322, test_size=139, length=512) 36 | ECG200= Data_set(name='ECG200', classes_num=2, train_size=100, test_size=100, length=96) 37 | ECG5000= Data_set(name='ECG5000', classes_num=5, train_size=500, test_size=4500, length=140) 38 | ECGFiveDays= Data_set(name='ECGFiveDays', classes_num=2, train_size=23, test_size=861, length=136) 39 | ElectricDevices= Data_set(name='ElectricDevices', classes_num=7, train_size=8926, test_size=7711, length=96) 40 | EOGHorizontalSignal= Data_set(name='EOGHorizontalSignal', classes_num=12, train_size=362, test_size=362, length=1250) 41 | EOGVerticalSignal= Data_set(name='EOGVerticalSignal', classes_num=12, train_size=362, test_size=362, length=1250) 42 | EthanolLevel= Data_set(name='EthanolLevel', classes_num=4, train_size=504, test_size=500, length=1751) 43 | FaceAll= Data_set(name='FaceAll', classes_num=14, train_size=560, test_size=1690, length=131) 44 | FaceFour= Data_set(name='FaceFour', classes_num=4, train_size=24, test_size=88, length=350) 45 | FacesUCR= Data_set(name='FacesUCR', classes_num=14, train_size=200, test_size=2050, length=131) 46 | Fish= Data_set(name='Fish', classes_num=7, train_size=175, test_size=175, length=463) 47 | FordA= Data_set(name='FordA', classes_num=2, train_size=3601, test_size=1320, length=500) 48 | FordB= Data_set(name='FordB', classes_num=2, train_size=3636, test_size=810, length=500) 49 | FreezerRegularTrain= Data_set(name='FreezerRegularTrain', classes_num=2, train_size=150, test_size=2850, length=301) 50 | FreezerSmallTrain= Data_set(name='FreezerSmallTrain', classes_num=2, train_size=28, test_size=2850, length=301) 51 | Fungi= Data_set(name='Fungi', classes_num=18, train_size=18, test_size=186, length=201) 52 | GestureMidAirD1= Data_set(name='GestureMidAirD1', classes_num=26, train_size=208, test_size=130, length=360) 53 | GestureMidAirD2= Data_set(name='GestureMidAirD2', classes_num=26, train_size=208, test_size=130, length=360) 54 | GestureMidAirD3= Data_set(name='GestureMidAirD3', classes_num=26, train_size=208, test_size=130, length=360) 55 | GesturePebbleZ1= Data_set(name='GesturePebbleZ1', classes_num=6, train_size=132, test_size=172, length=455) 56 | GesturePebbleZ2= Data_set(name='GesturePebbleZ2', classes_num=6, train_size=146, test_size=158, length=455) 57 | GunPoint= Data_set(name='GunPoint', classes_num=2, train_size=50, test_size=150, length=150) 58 | GunPointAgeSpan= Data_set(name='GunPointAgeSpan', classes_num=2, train_size=135, test_size=316, length=150) 59 | GunPointMaleVersusFemale= Data_set(name='GunPointMaleVersusFemale', classes_num=2, train_size=135, test_size=316, length=150) 60 | GunPointOldVersusYoung= Data_set(name='GunPointOldVersusYoung', classes_num=2, train_size=136, test_size=315, length=150) 61 | Ham= Data_set(name='Ham', classes_num=2, train_size=109, test_size=105, length=431) 62 | HandOutlines= Data_set(name='HandOutlines', classes_num=2, train_size=1000, test_size=370, length=2709) 63 | Haptics= Data_set(name='Haptics', classes_num=5, train_size=155, test_size=308, length=1092) 64 | Herring= Data_set(name='Herring', classes_num=2, train_size=64, test_size=64, length=512) 65 | HouseTwenty= Data_set(name='HouseTwenty', classes_num=2, train_size=40, test_size=119, length=2000) 66 | InlineSkate= Data_set(name='InlineSkate', classes_num=7, train_size=100, test_size=550, length=1882) 67 | InsectEPGRegularTrain= Data_set(name='InsectEPGRegularTrain', classes_num=3, train_size=62, test_size=249, length=601) 68 | InsectEPGSmallTrain= Data_set(name='InsectEPGSmallTrain', classes_num=3, train_size=17, test_size=249, length=601) 69 | InsectWingbeatSound= Data_set(name='InsectWingbeatSound', classes_num=11, train_size=220, test_size=1980, length=256) 70 | ItalyPower= Data_set(name='ItalyPower', classes_num=2, train_size=67, test_size=1029, length=24) 71 | LargeKitchenAppliances= Data_set(name='LargeKitchenAppliances', classes_num=3, train_size=375, test_size=375, length=720) 72 | Lighting2= Data_set(name='Lighting2', classes_num=2, train_size=60, test_size=61, length=637) 73 | Lighting7= Data_set(name='Lighting7', classes_num=7, train_size=70, test_size=73, length=319) 74 | MALLAT= Data_set(name='MALLAT', classes_num=8, train_size=55, test_size=2345, length=1024) 75 | Meat= Data_set(name='Meat', classes_num=3, train_size=60, test_size=60, length=448) 76 | MedicalImages= Data_set(name='MedicalImages', classes_num=10, train_size=381, test_size=760, length=99) 77 | MelbournePedestrian= Data_set(name='MelbournePedestrian', classes_num=10, train_size=1194, test_size=2439, length=24) 78 | MiddlePhalanxOutlineAgeGroup= Data_set(name='MiddlePhalanxOutlineAgeGroup', classes_num=3, train_size=400, test_size=154, length=80) 79 | MiddlePhalanxOutlineCorrect= Data_set(name='MiddlePhalanxOutlineCorrect', classes_num=2, train_size=600, test_size=291, length=80) 80 | MiddlePhalanxTW= Data_set(name='MiddlePhalanxTW', classes_num=6, train_size=399, test_size=154, length=80) 81 | MixedShapesRegularTrain= Data_set(name='MixedShapesRegularTrain', classes_num=5, train_size=500, test_size=2425, length=1024) 82 | MixedShapesSmallTrain= Data_set(name='MixedShapesSmallTrain', classes_num=5, train_size=100, test_size=2425, length=1024) 83 | MoteStrain= Data_set(name='MoteStrain', classes_num=2, train_size=20, test_size=1252, length=84) 84 | NonInvThorax1= Data_set(name='NonInvThorax1', classes_num=42, train_size=1800, test_size=1965, length=750) 85 | NonInvThorax2= Data_set(name='NonInvThorax2', classes_num=42, train_size=1800, test_size=1965, length=750) 86 | OliveOil= Data_set(name='OliveOil', classes_num=4, train_size=30, test_size=30, length=570) 87 | OSULeaf= Data_set(name='OSULeaf', classes_num=6, train_size=200, test_size=242, length=427) 88 | PhalangesOutlinesCorrect= Data_set(name='PhalangesOutlinesCorrect', classes_num=2, train_size=1800, test_size=858, length=80) 89 | Phoneme= Data_set(name='Phoneme', classes_num=39, train_size=214, test_size=1896, length=1024) 90 | PickupGestureWiimoteZ= Data_set(name='PickupGestureWiimoteZ', classes_num=10, train_size=50, test_size=50, length=361) 91 | PigAirwayPressure= Data_set(name='PigAirwayPressure', classes_num=52, train_size=104, test_size=208, length=2000) 92 | PigArtPressure= Data_set(name='PigArtPressure', classes_num=52, train_size=104, test_size=208, length=2000) 93 | PigCVP= Data_set(name='PigCVP', classes_num=52, train_size=104, test_size=208, length=2000) 94 | PLAID= Data_set(name='PLAID', classes_num=11, train_size=537, test_size=537, length=1345) 95 | Plane= Data_set(name='Plane', classes_num=7, train_size=105, test_size=105, length=144) 96 | PowerCons= Data_set(name='PowerCons', classes_num=2, train_size=180, test_size=180, length=144) 97 | ProximalPhalanxOutlineAgeGroup= Data_set(name='ProximalPhalanxOutlineAgeGroup', classes_num=3, train_size=400, test_size=205, length=80) 98 | ProximalPhalanxOutlineCorrect= Data_set(name='ProximalPhalanxOutlineCorrect', classes_num=2, train_size=600, test_size=291, length=80) 99 | ProximalPhalanxTW= Data_set(name='ProximalPhalanxTW', classes_num=6, train_size=400, test_size=205, length=80) 100 | RefrigerationDevices= Data_set(name='RefrigerationDevices', classes_num=3, train_size=375, test_size=375, length=720) 101 | Rock= Data_set(name='Rock', classes_num=4, train_size=20, test_size=50, length=2844) 102 | ScreenType= Data_set(name='ScreenType', classes_num=3, train_size=375, test_size=375, length=720) 103 | SemgHandGenderCh2= Data_set(name='SemgHandGenderCh2', classes_num=2, train_size=300, test_size=600, length=1500) 104 | SemgHandMovementCh2= Data_set(name='SemgHandMovementCh2', classes_num=6, train_size=450, test_size=450, length=1500) 105 | SemgHandSubjectCh2= Data_set(name='SemgHandSubjectCh2', classes_num=5, train_size=450, test_size=450, length=1500) 106 | ShakeGestureWiimoteZ= Data_set(name='ShakeGestureWiimoteZ', classes_num=10, train_size=50, test_size=50, length=385) 107 | ShapeletSim= Data_set(name='ShapeletSim', classes_num=2, train_size=20, test_size=180, length=500) 108 | ShapesAll= Data_set(name='ShapesAll', classes_num=60, train_size=600, test_size=600, length=512) 109 | SmallKitchenAppliances= Data_set(name='SmallKitchenAppliances', classes_num=3, train_size=375, test_size=375, length=720) 110 | SmoothSubspace= Data_set(name='SmoothSubspace', classes_num=3, train_size=150, test_size=150, length=15) 111 | SonyAIBORobot= Data_set(name='SonyAIBORobot', classes_num=2, train_size=20, test_size=601, length=70) 112 | SonyAIBORobotII= Data_set(name='SonyAIBORobotII', classes_num=2, train_size=27, test_size=953, length=65) 113 | StarLightCurves= Data_set(name='StarLightCurves', classes_num=3, train_size=1000, test_size=8236, length=1024) 114 | Strawberry= Data_set(name='Strawberry', classes_num=2, train_size=613, test_size=370, length=235) 115 | SwedishLeaf= Data_set(name='SwedishLeaf', classes_num=15, train_size=500, test_size=625, length=128) 116 | Symbols= Data_set(name='Symbols', classes_num=6, train_size=25, test_size=995, length=398) 117 | SyntheticControl= Data_set(name='SyntheticControl', classes_num=6, train_size=300, test_size=300, length=60) 118 | ToeSegmentation1= Data_set(name='ToeSegmentation1', classes_num=2, train_size=40, test_size=228, length=277) 119 | ToeSegmentation2= Data_set(name='ToeSegmentation2', classes_num=2, train_size=36, test_size=130, length=343) 120 | Trace= Data_set(name='Trace', classes_num=4, train_size=100, test_size=100, length=275) 121 | TwoLeadECG= Data_set(name='TwoLeadECG', classes_num=2, train_size=23, test_size=1139, length=82) 122 | TwoPatterns= Data_set(name='TwoPatterns', classes_num=4, train_size=1000, test_size=4000, length=128) 123 | UMD= Data_set(name='UMD', classes_num=3, train_size=36, test_size=144, length=150) 124 | UWaveGestureLibraryAll= Data_set(name='UWaveGestureLibraryAll', classes_num=8, train_size=896, test_size=3582, length=945) 125 | UWaveX= Data_set(name='UWaveX', classes_num=8, train_size=896, test_size=3582, length=315) 126 | UWaveY= Data_set(name='UWaveY', classes_num=8, train_size=896, test_size=3582, length=315) 127 | UWaveZ= Data_set(name='UWaveZ', classes_num=8, train_size=896, test_size=3582, length=315) 128 | Wafer= Data_set(name='Wafer', classes_num=2, train_size=1000, test_size=6147, length=152) 129 | Wine= Data_set(name='Wine', classes_num=2, train_size=57, test_size=54, length=234) 130 | Words50 = Data_set(name='Words50', classes_num=50, train_size=450, test_size=455,length=270) 131 | WordSynonyms = Data_set(name='WordSynonyms', classes_num=25, train_size=267, test_size=638,length=270) 132 | Worms = Data_set(name='Worms', classes_num=5, train_size=181, test_size=77,length=900) 133 | WormsTwoClass = Data_set(name='WormsTwoClass', classes_num=2, train_size=181, test_size=77,length=900) 134 | Yoga= Data_set(name='Yoga', classes_num=2, train_size=300, test_size=3000, length=426) 135 | 136 | data_set_dict = {'ACSF1':ACSF1,'Adiac':Adiac,'AllGestureWiimoteX':AllGestureWiimoteX,'AllGestureWiimoteY':AllGestureWiimoteY, 137 | 'AllGestureWiimoteZ':AllGestureWiimoteZ,'ArrowHead':ArrowHead,'Beef': Beef,'BeetleFly': BeetleFly, 138 | 'BirdChicken':BirdChicken,'BME':BME,'Car':Car,'CBF': CBF,'Chinatown': Chinatown,'ChlorineCon': ChlorineCon, 139 | 'CinCECGTorso': CinCECGTorso,'Coffee': Coffee,'Computers':Computers,'CricketX': CricketX,'CricketY': CricketY, 140 | 'CricketZ': CricketZ,'Crop': Crop,'DiatomSizeR': DiatomSizeR,'DistalPhalanxOutlineAgeGroup':DistalPhalanxOutlineAgeGroup, 141 | 'DistalPhalanxOutlineCorrect':DistalPhalanxOutlineCorrect,'DistalPhalanxTW':DistalPhalanxTW,'DodgerLoopDay':DodgerLoopDay, 142 | 'DodgerLoopGame':DodgerLoopGame,'DodgerLoopWeekend':DodgerLoopWeekend,'Earthquakes':Earthquakes, 143 | 'ECG200':ECG200,'ECG5000':ECG5000,'ECGFiveDays': ECGFiveDays,'ElectricDevices':ElectricDevices,'EOGHorizontalSignal':EOGHorizontalSignal, 144 | 'EOGVerticalSignal':EOGVerticalSignal,'EthanolLevel':EthanolLevel,'FaceAll': FaceAll,'FaceFour': FaceFour,'FacesUCR': FacesUCR,'Fish': Fish, 145 | 'FordA':FordA,'FordB':FordB,'FreezerRegularTrain':FreezerRegularTrain,'FreezerSmallTrain':FreezerSmallTrain,'Fungi':Fungi, 146 | 'GestureMidAirD1':GestureMidAirD1,'GestureMidAirD2':GestureMidAirD2,'GestureMidAirD3':GestureMidAirD3,'GesturePebbleZ1':GesturePebbleZ1, 147 | 'GesturePebbleZ2':GesturePebbleZ2,'GunPoint': GunPoint,'GunPointAgeSpan': GunPointAgeSpan,'GunPointMaleVersusFemale': GunPointMaleVersusFemale, 148 | 'GunPointOldVersusYoung': GunPointOldVersusYoung,'Ham':Ham,'HandOutlines':HandOutlines,'Haptics': Haptics,'Herring':Herring, 149 | 'HouseTwenty':HouseTwenty,'InlineSkate':InlineSkate,'InsectEPGRegularTrain':InsectEPGRegularTrain,'InsectEPGSmallTrain':InsectEPGSmallTrain, 150 | 'InsectWingbeatSound':InsectWingbeatSound,'ItalyPower':ItalyPower,'LargeKitchenAppliances':LargeKitchenAppliances,'Lighting2':Lighting2, 151 | 'Lighting7':Lighting7,'MALLAT':MALLAT,'Meat':Meat,'MedicalImages': MedicalImages,'MelbournePedestrian': MelbournePedestrian, 152 | 'MiddlePhalanxOutlineAgeGroup':MiddlePhalanxOutlineAgeGroup,'MiddlePhalanxOutlineCorrect':MiddlePhalanxOutlineCorrect, 153 | 'MiddlePhalanxTW':MiddlePhalanxTW,'MixedShapesRegularTrain':MixedShapesRegularTrain,'MixedShapesSmallTrain':MixedShapesSmallTrain, 154 | 'MoteStrain': MoteStrain,'NonInvThorax1': NonInvThorax1,'NonInvThorax2': NonInvThorax2,'OliveOil': OliveOil,'OSULeaf': OSULeaf, 155 | 'PhalangesOutlinesCorrect':PhalangesOutlinesCorrect,'Phoneme':Phoneme,'PickupGestureWiimoteZ':PickupGestureWiimoteZ, 156 | 'PigAirwayPressure':PigAirwayPressure,'PigArtPressure':PigArtPressure,'PigCVP':PigCVP,'PLAID':PLAID,'Plane':Plane,'PowerCons':PowerCons, 157 | 'ProximalPhalanxOutlineAgeGroup':ProximalPhalanxOutlineAgeGroup,'ProximalPhalanxOutlineCorrect':ProximalPhalanxOutlineCorrect, 158 | 'ProximalPhalanxTW':ProximalPhalanxTW,'RefrigerationDevices':RefrigerationDevices,'Rock':Rock,'ScreenType':ScreenType, 159 | 'SemgHandGenderCh2':SemgHandGenderCh2,'SemgHandMovementCh2':SemgHandMovementCh2,'SemgHandSubjectCh2':SemgHandSubjectCh2, 160 | 'ShakeGestureWiimoteZ':ShakeGestureWiimoteZ,'ShapeletSim':ShapeletSim,'ShapesAll':ShapesAll,'SmallKitchenAppliances':SmallKitchenAppliances, 161 | 'SmoothSubspace':SmoothSubspace,'SonyAIBORobot': SonyAIBORobot,'SonyAIBORobotII': SonyAIBORobotII,'StarLightCurves': StarLightCurves,'Strawberry':Strawberry, 162 | 'SwedishLeaf': SwedishLeaf,'Symbols': Symbols,'SyntheticControl': SyntheticControl,'ToeSegmentation1':ToeSegmentation1, 163 | 'ToeSegmentation2':ToeSegmentation2,'Trace': Trace,'TwoLeadECG': TwoLeadECG,'TwoPatterns': TwoPatterns,'UMD': UMD, 164 | 'UWaveGestureLibraryAll': UWaveGestureLibraryAll,'UWaveX': UWaveX,'UWaveY': UWaveY,'UWaveZ': UWaveZ,'Wafer': Wafer,'Wine':Wine,'Words50':Words50, 165 | 'WordSynonyms':WordSynonyms,'Worms':Worms,'WormsTwoClass':WormsTwoClass,'Yoga': Yoga} 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | --------------------------------------------------------------------------------