28 for ( int32_t i = 0 ; i < m_num_states-1 ; ++i )
52 for ( int32_t i = 0 ; i < loss_mat.
num_cols ; ++i )
54 for ( int32_t s = 0 ; s < loss_mat.
num_rows ; ++s )
69 for ( int32_t i = 0 ; i < state_seq_lhs.
vlen ; ++i )
84 for ( int32_t i = 1 ; i < state_seq.vlen-1 ; ++i )
87 state_seq[i] = seq_data[i] + 2;
93 state_seq[state_seq.vlen-1] = 1;
109 for ( int32_t i = 0 ; i < state_seq.
vlen ; ++i )
111 if ( state_seq[i] == 3 )
123 emission_weights.
zero();
136 for ( int32_t f = 0 ; f < num_feats ; ++f )
138 for ( int32_t o = 0 ; o < num_obs ; ++o )
140 em_idx = s*num_feats*num_obs + f*num_obs + o;
141 emission_weights[em_idx] = w[w_idx++];
154 for ( int32_t f = 0 ; f < num_feats ; ++f )
159 for ( int32_t i = 0 ; i < num_plif_nodes ; ++i )
160 penalties[p_idx++] = w[w_idx++];
181 transmission_weights(0,2) = 0;
182 transmission_weights(0,3) = 0;
184 transmission_weights(2,1) = 0;
185 transmission_weights(2,2) = w[0];
186 transmission_weights(2,3) = w[1];
188 transmission_weights(3,1) = 0;
189 transmission_weights(3,2) = w[3];
190 transmission_weights(3,3) = w[2];
196 int32_t num_feats, int32_t num_obs)
const 203 psi[0] = transmission_weights(2,2);
204 psi[1] = transmission_weights(2,3);
205 psi[2] = transmission_weights(3,3);
206 psi[3] = transmission_weights(3,2);
212 for ( int32_t f = 0 ; f < num_feats ; ++f )
214 for ( int32_t o = 0 ; o < num_obs ; ++o )
216 obs_idx = s*num_feats*num_obs + f*num_obs + o;
217 psi[psi_idx++] = emission_weights[obs_idx];
227 int32_t num_free_states = 2;
230 weights_to_vector(vec, transmission_weights, emission_weights, num_feats, num_obs);
235 int32_t num_feats)
const 237 REQUIRE(num_free_states == 2,
"Using the TwoStateModel only two states are free\n")
241 for ( int32_t i = 0 ; i < num_feats ; ++i )
242 monotonicity[i] = -1;
243 for ( int32_t i = num_feats ; i < 2*num_feats ; ++i )
244 monotonicity[i] = +1;
250 int32_t num_features, int32_t num_noise_features)
253 int32_t num_states = 2;
255 int32_t block_len[] = {10, 100};
257 int32_t num_blocks[] = {0, 3};
273 for ( int32_t i = 0 ; i < num_exm ; ++i)
277 rnb = num_blocks[0] +
CMath::ceil((num_blocks[1]-num_blocks[0])*
280 for ( int32_t j = 0 ; j < rnb ; ++j )
282 rl = block_len[0] +
CMath::ceil((block_len[1]-block_len[0])*
286 for ( int32_t idx = rp-1 ; idx < rp+rl ; ++idx )
289 ll[i*exm_len + idx] = 1;
308 for ( int32_t i = 0 ; i < num_features ; ++i )
313 for ( int32_t j = 0 ; j < d1.
vlen ; ++j )
316 for ( int32_t j = 0 ; j < d2.
vlen ; ++j )
317 d2[j] = distort[ distort.
vlen-d2.
vlen+j ];
319 for ( int32_t j = 0 ; j < d1.
vlen ; ++j )
320 lf[ d1[j] ] = lf[ d2[j] ];
323 for ( int32_t j = 0 ; j < signal.
num_cols ; ++j )
328 for ( int32_t i = 0 ; i < num_noise_features ; ++i )
331 for ( int32_t j = 0 ; j < signal.
num_cols ; ++j )
339 bool use_plifs =
true;
virtual void weights_to_vector(SGVector< float64_t > &psi, SGMatrix< float64_t > transmission_weights, SGVector< float64_t > emission_weights, int32_t num_feats, int32_t num_obs) const
SGMatrix< float64_t > m_state_loss_mat
static void permute(SGVector< T > v, CRandom *rand=NULL)
virtual ~CTwoStateModel()
void set_plif_penalty(SGVector< float64_t > p_penalties)
virtual void reshape_emission_params(SGVector< float64_t > &emission_weights, SGVector< float64_t > w, int32_t num_feats, int32_t num_obs)
static float64_t ceil(float64_t d)
static const float64_t INFTY
infinity
static float32_t normal_random(float32_t mean, float32_t std_dev)
Class CHMSVMModel that represents the application specific model and contains the application depende...
SGVector< float64_t > m_q
CSGObject * get_element(int32_t index) const
virtual SGMatrix< float64_t > loss_matrix(CSequence *label_seq)
Class CSequenceLabels used e.g. in the application of Structured Output (SO) learning to Hidden Marko...
class CStateModel base, abstract class for the internal state representation used in the CHMSVMModel...
SGVector< float64_t > m_p
Class CSequence to be used in the application of Structured Output (SO) learning to Hidden Markov Sup...
virtual float64_t loss(CSequence *label_seq_lhs, CSequence *label_seq_rhs)
void add_vector_label(SGVector< int32_t > label)
SGVector< int32_t > get_data() const
void range_fill(T start=0)
Dynamic array class for CSGObject pointers that creates an array that can be used like a list or an a...
void set_const(T const_elem)
int32_t m_num_transmission_params
all of classes and functions are contained in the shogun namespace
virtual void reshape_transmission_params(SGMatrix< float64_t > &transmission_weights, SGVector< float64_t > w)
Class CMatrixFeatures used to represent data whose feature vectors are better represented with matric...
static CHMSVMModel * simulate_data(int32_t num_exm, int32_t exm_len, int32_t num_features, int32_t num_noise_features)
void set_const(T const_elem)
virtual SGVector< int32_t > labels_to_states(CSequence *label_seq) const
static float64_t round(float64_t d)
virtual SGVector< int32_t > get_monotonicity(int32_t num_free_states, int32_t num_feats) const
virtual CSequence * states_to_labels(SGVector< int32_t > state_seq) const