Beispiel #1
0
def get_model(num_exm,
              num_train,
              lens,
              block_len,
              blocks=1,
              anomaly_prob=0.15):
    print(
        'Generating {0} sequences, {1} for training, each with {2} anomaly probability.'
        .format(num_exm, num_train, anomaly_prob))
    cnt = 0
    X = []
    Y = []
    label = []
    lblcnt = co.matrix(0.0, (1, lens))
    for i in range(num_exm):
        (exm, lbl,
         marker) = ToyData.get_2state_anom_seq(lens,
                                               block_len,
                                               anom_prob=anomaly_prob,
                                               num_blocks=blocks)
        cnt += lens
        X.append(exm)
        Y.append(lbl)
        label.append(marker)
        # some lbl statistics
        if i < num_train:
            lblcnt += lbl
    X = normalize_sequence_data(X)
    return (SOHMM(X[0:num_train],
                  Y[0:num_train]), SOHMM(X[num_train:],
                                         Y[num_train:]), SOHMM(X, Y), label)
Beispiel #2
0
def get_model(num_exm, num_train, lens, block_len, blocks=1, anomaly_prob=0.15):
	print('Generating {0} sequences, {1} for training, each with {2} anomaly probability.'.format(num_exm, num_train, anomaly_prob))
	cnt = 0 
	X = [] 
	Y = []
	label = []
	for i in range(num_exm):
		(exm, lbl, marker) = ToyData.get_2state_anom_seq(lens, block_len, anom_prob=anomaly_prob, num_blocks=blocks)
		cnt += lens
		X.append(exm)
		Y.append(lbl)
		label.append(marker)
	X = remove_mean(X,1)
	return (SOHMM(X[0:num_train],Y[0:num_train]), SOHMM(X[num_train:],Y[num_train:]), SOHMM(X,Y), label)
Beispiel #3
0
def plot_icml_toy_seqs():
    from toydata import ToyData
    lens = 600
    blocks = [1, 2, 5, 10, 20, 40, 60, 100]
    data = []
    lbl = []
    for i in blocks:
        (exm, label, marker) = ToyData.get_2state_anom_seq(lens,
                                                           120,
                                                           anom_prob=1.0,
                                                           num_blocks=i)
        data.append(exm)
        lbl.append(label)

    plt.figure(1)
    style = ['-', '--', '-', '.-', '--', '-', '-', '-', '-', '--']
    marker = ['D', 'o', '^', 'D', 's', '^', 'D', 's', 's', 'o']
    colors = ['r', 'b', 'm', 'm', 'm', 'c', 'c', 'c', 'g', 'g']
    alphas = [1., 0.9, .8, .6, .4, .8, .6, .4, 1., .6]
    widths = [2, 4, 1, 4, 8, 1, 4, 8, 1, 8]

    ys = []
    for i in [0, -1]:
        ys.append(i * 10)
        plt.plot(range(lens), np.array(data[i]).T + ys[-1], \
            color='r', linewidth=2, alpha=0.6, marker='')
        plt.plot(range(lens), np.array(lbl[i]).T + ys[-1], \
            color='k', linewidth=2, alpha=0.8, marker='')

    #plt.yscale('log')
    plt.xticks([0, 300, 600], ['0', '300', '600'], fontsize=16)
    plt.yticks(ys, ['0%', '100%'], fontsize=16)
    plt.ylabel('Percentage of disorganization', fontsize=18)
    plt.xlabel('Sequence position', fontsize=18)
    plt.legend(['Noisy observations', 'True state sequence'],
               fontsize=18,
               fancybox=True,
               framealpha=0.7)
    plt.show()