示例#1
0
    def setUp(self):
        self.prng = np.random.RandomState(14)  # TODO: remove fixed seeding

        self.n_unique = 2
        self.n_lags = 2
        self.startprob = np.array([0.6, 0.4])
        self.transmat = np.array([[0.8, 0.2], [0.1, 0.9]])
        self.var = np.array([0.1, 0.3])
        self.alpha = np.array([0.8, 0.25])
        self.shared_alpha = False
        self.mu = np.array([[0.7, -2.0, 0.1], [-0.7, 2.0, -0, 1]])

        self.precision = np.array([[[599, 394], [800, 834]],
                                   [[375, 353], [342, 353]]])

        self.h = ar.ARTHMM(n_unique=self.n_unique,
                           n_lags=self.n_lags,
                           random_state=self.prng,
                           n_features=3,
                           shared_alpha=self.shared_alpha,
                           verbose=False)
        self.h.precision_ = self.precision
        self.h.startprob_ = self.startprob
        self.h.transmat_ = self.transmat
        self.h.mu_ = self.mu
        self.h.var_ = self.var
        self.h.alpha_ = self.alpha
示例#2
0
    def setUp(self):
        self.prng = np.random.RandomState(14)  # TODO: remove fixed seeding
        self.n_unique = 2
        self.n_features = 2
        self.n_lags = 2
        self.startprob = np.array([0.6, 0.4])
        self.transmat = np.array([[0.8, 0.2], [0.1, 0.9]])

        self.mu = np.array([[5.6, 10.4], [-4.7, 1.2]])

        self.alpha = np.array([[0.01, 0.2], [0.003, 0.004]])

        self.precision = np.array([[[0.8, 0.1], [0.1, 0.5]],
                                   [[0.9, 0.3], [0.3, 0.8]]])

        self.h = ar.ARTHMM(n_unique=self.n_unique,
                           n_lags=self.n_lags,
                           random_state=self.prng,
                           n_features=self.n_features,
                           shared_alpha=False,
                           verbose=False,
                           precision_bounds=np.array([-1e5, 1e5]),
                           init_params='samt')

        self.h.precision_ = self.precision
        self.h.startprob_ = self.startprob
        self.h.transmat_ = self.transmat
        self.h.mu_ = self.mu
        self.h.alpha_ = self.alpha
def autohmm(data, target):
    '''
	vals = np.diff(target['Target'])
	data = data[1:]
	data = np.column_stack([data, vals])
	'''
    vals = []
    X_train, X_test, Y_train, Y_test = train_test_split(data,
                                                        target['Target'],
                                                        test_size=0.33,
                                                        random_state=42)
    states = clustering(target)
    model = ar.ARTHMM(n_unique=len(states))
    print len(Y_train), X_train.shape
    model.fit(X_train)  #X_train.values for numpy array as lists of lists
    log_proba, state_seq = model.decode(X_test)
    print "state seq", len(state_seq), set(state_seq)
    path = state_seq
    prediction_state = np.argmax(model.transmat_[state_seq[-1], :])
    prediction = np.mean(
        [state_seq[prediction_state], state_seq[prediction_state - 1]])

    #prediction_state = np.argmax(a[path[-1],:])
    #prediction = np.argmax(b[prediction_state,:])

    vals.append(prediction)
    return state_seq, vals
示例#4
0
def test_alpha_set_unique():
    h = ar.ARTHMM(n_unique=2, n_tied=2, n_lags=3, shared_alpha=False)
    h.alpha_ = np.array([[0.1, 0.2, 0.5], [0.2, 0.5, 0.5]])
    correct_alpha = np.array([[0.1, 0.2, 0.5], [0.1, 0.2,
                                                0.5], [0.1, 0.2, 0.5],
                              [0.2, 0.5, 0.5], [0.2, 0.5, 0.5],
                              [0.2, 0.5, 0.5]])
    assert_array_equal(h._alpha_, correct_alpha)
示例#5
0
    def setUp(self):
        self.prng = np.random.RandomState(14)  # TODO: remove fixed seeding

        self.n_unique = 2
        self.n_lags = 1
        self.startprob = np.array([0.6, 0.4])
        self.transmat = np.array([[0.8, 0.2], [0.1, 0.9]])
        self.mu = np.array([2.0, -2.0])
        self.var = np.array([0.1, 0.3])
        self.alpha = np.array([0.8, 0.25])
        self.shared_alpha = False

        self.h = ar.ARTHMM(n_unique=self.n_unique,
                           n_lags=self.n_lags,
                           random_state=self.prng,
                           shared_alpha=self.shared_alpha,
                           verbose=False)
        self.h.startprob_ = self.startprob
        self.h.transmat_ = self.transmat
        self.h.mu_ = self.mu
        self.h.var_ = self.var
        self.h.alpha_ = self.alpha
示例#6
0
    def setUp(self):
        self.prng = np.random.RandomState(14)  # TODO: remove fixed seeding

        self.n_unique = 2
        self.n_lags = 1
        self.startprob = np.array([0.6, 0.4])
        self.transmat = np.array([[0.8, 0.2], [0.1, 0.9]])
        self.mu = np.array([[-2.0], [12.0]])
        self.alpha = np.array([0.08, 0.02])
        self.shared_alpha = False
        self.precision = np.array([[0.8], [0.9]])
        self.h = ar.ARTHMM(n_unique=self.n_unique,
                           n_lags=self.n_lags,
                           random_state=self.prng,
                           shared_alpha=self.shared_alpha,
                           verbose=False,
                           init_params='samt',
                           precision_bounds=np.array([-1e5, 1e5]))
        self.h.startprob_ = self.startprob
        self.h.precision_ = self.precision
        self.h.transmat_ = self.transmat
        self.h.mu_ = self.mu
        self.h.alpha_ = self.alpha
示例#7
0
def test_alpha_getter():
    h = ar.ARTHMM(n_unique=2, n_tied=2, n_lags=3, shared_alpha=False)
    new_alpha = np.array([[0.1, 0.2, 0.5], [0.2, 0.5, 0.5]])
    h.alpha_ = new_alpha
    assert_array_equal(h.alpha_, new_alpha)
示例#8
0
def test_alpha_unequal_despite_tied():
    with assert_raises(ValueError):
        h = ar.ARTHMM(n_unique=2, n_lags=1, shared_alpha=True)
        h.alpha_ = np.array([[0.1], [0.2]])
示例#9
0
def test_alpha_wrong_nlags():
    with assert_raises(ValueError):
        h = ar.ARTHMM(n_unique=2, n_lags=1, shared_alpha=False)
        h.alpha_ = np.array([[0.1, 0.2], [0.2, 0.2]])