示例#1
0
文件: xval.py 项目: yonas-y/dabstract
 def get(data):
     # inits
     train_index, val_index, test_index = (
         [None] * folds,
         [None] * folds,
         [None] * folds,
     )
     groups = [None] * folds
     group = stringlist2ind([k for k in data[group_key]])
     for k in np.unique(group):
         tmp_split = np.array_split(np.where(group == k)[0], folds)
         for f in range(folds):
             if k == 0:
                 groups[f] = np.empty(0)
             groups[f] = np.append(groups[f], tmp_split[f]).astype(int)
     for f in range(folds):
         sel = np.setdiff1d(np.arange(folds), f)
         train_index[f] = listnp_combine([groups[k] for k in sel])
         val_inds = np.random.choice(
             range(len(train_index[f])),
             int(np.ceil(len(train_index[f]) * val_frac)),
             replace=False,
         )
         val_index[f] = train_index[f][val_inds]
         train_index[f] = train_index[f][
             list(set(range(len(train_index[f]))) - set(val_inds))
         ]
     return {"train": train_index, "val": val_index, "test": groups}
示例#2
0
 def _get_binary_anomaly(self, paths):
     subdbs = np.unique(self['data']['subdb'])
     labels = [None] * len(subdbs)
     for k, subdb in enumerate(subdbs):
         subdb_id = np.where([s == subdb for s in self['data']['subdb']])[0]
         reorder = np.array([int(os.path.splitext(filename)[0]) \
                             for filename in \
                             [self['data']['filename'][k] for k in subdb_id]])
         labels[k] = np.load(
             os.path.join(paths['meta'], subdb + '_labels.npy'))[reorder]
     return listnp_combine(labels)
示例#3
0
    def process(self, data, **kwargs):
        # aggregate data
        tmp = [None] * len(self.methods)
        for k in range(len(self.methods)):
            if self.methods[k] == 'mean':
                tmp[k] = np.mean(data, axis=self.axis)
            elif self.methods[k] == 'std':
                tmp[k] = np.std(data, axis=self.axis)
            elif self.methods[k] == 'kurtosis':
                tmp[k] = scipy.stats.kurtosis(data, axis=self.axis)
            else:
                print('Aggregation method not supported')
                sys.exit()
        output = (listnp_combine(tmp, method=self.combine, axis=self.combine_axis) if self.combine is not None else tmp)

        return output, {'time_step': 0} if self.axis == 0 else dict()
示例#4
0
    def process(self, data: np.ndarray, **kwargs) -> (np.ndarray, Dict):
        # aggregate data
        tmp = [None] * len(self.methods)
        for k in range(len(self.methods)):
            if self.methods[k] == "mean":
                tmp[k] = np.mean(data, axis=self.axis)
            elif self.methods[k] == "std":
                tmp[k] = np.std(data, axis=self.axis)
            elif self.methods[k] == "kurtosis":
                tmp[k] = scipy.stats.kurtosis(data, axis=self.axis)
            else:
                print("Aggregation method not supported")
                sys.exit()
        output = (listnp_combine(
            tmp, method=self.combine, axis=self.combine_axis)
                  if self.combine is not None else tmp)

        return output, {"time_step": 0} if self.axis == 0 else dict()