def crop_status_hmm_model(nn_pobability_matrix, timeseries_steps, n_observed_classes): # 0 1 2 3 4 5 ['emergence', 'growth', 'flowers', 'senescing', 'senesced', 'no_crop'] d0 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=0, n_samples=timeseries_steps, n_classes=n_observed_classes) d1 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=1, n_samples=timeseries_steps, n_classes=n_observed_classes) d2 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=2, n_samples=timeseries_steps, n_classes=n_observed_classes) d3 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=3, n_samples=timeseries_steps, n_classes=n_observed_classes) d4 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=4, n_samples=timeseries_steps, n_classes=n_observed_classes) d5 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=5, n_samples=timeseries_steps, n_classes=n_observed_classes) s0_emerge = State(d0, name='emergence') s1_growth = State(d1, name='growth') s2_fls = State(d2, name='flowers') s3_sencing = State(d3, name='senescing') s4_senced = State(d4, name='senesced') s5_none = State(d5, name='no_crop') model = HiddenMarkovModel() # Initialize each hidden state. # All states have an equal chance of being the starting state. for s in [s0_emerge, s1_growth, s2_fls, s3_sencing, s4_senced, s5_none]: model.add_state(s) model.add_transition(model.start, s, 1) model.add_transitions( s0_emerge, [s0_emerge, s1_growth, s2_fls, s3_sencing, s4_senced, s5_none], [90., 5., 0., 0., 0., 5.]) model.add_transitions( s1_growth, [s0_emerge, s1_growth, s2_fls, s3_sencing, s4_senced, s5_none], [0., 90., 2.5, 2.5, 0., 5.]) model.add_transitions( s2_fls, [s0_emerge, s1_growth, s2_fls, s3_sencing, s4_senced, s5_none], [0., 0., 90., 5., 0., 5.]) model.add_transitions( s3_sencing, [s0_emerge, s1_growth, s2_fls, s3_sencing, s4_senced, s5_none], [0., 0., 0., 90., 5., 5.]) model.add_transitions( s4_senced, [s0_emerge, s1_growth, s2_fls, s3_sencing, s4_senced, s5_none], [0., 0., 0., 0., 90., 10.]) model.add_transitions( s5_none, [s0_emerge, s1_growth, s2_fls, s3_sencing, s4_senced, s5_none], [10., 0, 0., 0., 0., 90.]) model.bake(verbose=False) return model
def dominant_cover_hmm_model(nn_pobability_matrix, timeseries_steps, n_observed_classes): d0 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=0, n_samples=timeseries_steps, n_classes=n_observed_classes) d1 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=1, n_samples=timeseries_steps, n_classes=n_observed_classes) d2 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=2, n_samples=timeseries_steps, n_classes=n_observed_classes) d3 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=3, n_samples=timeseries_steps, n_classes=n_observed_classes) d4 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=4, n_samples=timeseries_steps, n_classes=n_observed_classes) s0_veg = State(d0, name='vegetation') s1_residue = State(d1, name='residue') s2_soil = State(d2, name='soil') s3_snow = State(d3, name='snow') s4_water = State(d4, name='water') model = HiddenMarkovModel() # Initialize each hidden state. # All states have an equal chance of being the starting state. for s in [s0_veg, s1_residue, s2_soil, s3_snow, s4_water]: model.add_state(s) model.add_transition(model.start, s, 1) model.add_transitions(s0_veg, [s0_veg, s1_residue, s2_soil, s3_snow, s4_water], [95., 1.0, 1.0, 1.0, 1.0]) model.add_transitions(s1_residue, [s0_veg, s1_residue, s2_soil, s3_snow, s4_water], [1.0, 95., 1.0, 1.0, 1.0]) model.add_transitions(s2_soil, [s0_veg, s1_residue, s2_soil, s3_snow, s4_water], [1.0, 1.0, 95., 1.0, 1.0]) model.add_transitions(s3_snow, [s0_veg, s1_residue, s2_soil, s3_snow, s4_water], [1.0, 1.0, 1.0, 95., 1.0]) model.add_transitions(s4_water, [s0_veg, s1_residue, s2_soil, s3_snow, s4_water], [1.0, 1.0, 1.0, 1.0, 95.]) model.bake(verbose=False) return model
def crop_type_hmm_model(nn_pobability_matrix, timeseries_steps, n_observed_classes): # 0 1 2 3 4 5 [ 'unknown_plant', 'large_grass', 'small_grass', 'other', 'fallow', 'no_crop' ] d0 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=0, n_samples=timeseries_steps, n_classes=n_observed_classes) d1 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=1, n_samples=timeseries_steps, n_classes=n_observed_classes) d2 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=2, n_samples=timeseries_steps, n_classes=n_observed_classes) d3 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=3, n_samples=timeseries_steps, n_classes=n_observed_classes) d4 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=4, n_samples=timeseries_steps, n_classes=n_observed_classes) d5 = NeuralNetworkWrapperCustom( predicted_probabilities=nn_pobability_matrix, i=5, n_samples=timeseries_steps, n_classes=n_observed_classes) s0_unk = State(d0, name='unknown_plant') s1_large = State(d1, name='large_grass') s2_small = State(d2, name='small_grass') s3_other = State(d3, name='other') s4_fallow = State(d4, name='fallow') s5_none = State(d5, name='no_crop') model = HiddenMarkovModel() # Initialize each hidden state. # All states have an equal chance of being the starting state. for s in [s0_unk, s1_large, s2_small, s3_other, s4_fallow, s5_none]: model.add_state(s) model.add_transition(model.start, s, 1) model.add_transitions( s0_unk, [s0_unk, s1_large, s2_small, s3_other, s4_fallow, s5_none], [95., 0., 0., 0., 0., 5.]) model.add_transitions( s1_large, [s0_unk, s1_large, s2_small, s3_other, s4_fallow, s5_none], [0., 95., 0., 0., 0., 5.]) model.add_transitions( s2_small, [s0_unk, s1_large, s2_small, s3_other, s4_fallow, s5_none], [0., 0., 95., 0., 0., 5.]) model.add_transitions( s3_other, [s0_unk, s1_large, s2_small, s3_other, s4_fallow, s5_none], [0., 0., 0., 95., 0., 5.]) model.add_transitions( s4_fallow, [s0_unk, s1_large, s2_small, s3_other, s4_fallow, s5_none], [0., 0., 0., 0., 95., 5.]) model.add_transitions( s5_none, [s0_unk, s1_large, s2_small, s3_other, s4_fallow, s5_none], [2., 2., 2., 2., 2., 90.]) model.bake(verbose=False) return model