Thank you, Kyle, for your answer. I think there is some massaging of the
numbers going on. For example, I tried to specify a silent state (a state
where all emission probabilities are 0).The result was that all emissions
at that state were of the first signal. I.e. the probability of the first
emission was rounded up to 1 (code below).
My question: is there a way to specify a silent state? There are some
applications that require such a thing (e.g. DNA sequences where one of the
things that could happen is the deletion of a symbol. The deletion state
would show up in the sequence of states, but would
emit no signal)
--------------
Code sample: trying to build an HMM with the second state (state 1) as a
silent state:
def testHMM():
startprob = np.array([0.5, 0.5])
transmat = np.array([[0.5, 0.5], [0.5, 0.5]])
emissions = np.array([[0,0.8,0.2], [0,0,0]])
model = hmm.MultinomialHMM(2, startprob, transmat)
model.emissionprob_ = emissions
return model
>>> m = HMM_test.testHMM()
>>> m.sample(20)
(array([2, 1, 1, 1, 2, 0, 1, 0, 1, 1, 0, 1, 0, 2, 0, 0, 1, 1, 1, 1],
dtype=int64),
array([0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0]))
In this example, singal 0 should've never shown up (since its probability
is 0 in both states). However, it is the only signal emitted by state 1.
Anas
2014-05-07 21:34 GMT+02:00 Kyle Kastner <kastnerk...@gmail.com>:
> If you are manually specifying the emission probabilities I don't think
> there are any hooks/asserts to guarantee that variable is normalized I.E.
> if you assign to the emissionprob_ instead of using the fit() function, I
> think it is on you to make sure the emission probabilities you are
> assigning *are* actually probabilities. From my perspective that is desired
> behavior, but maybe someone with more experience on this HMM implementation
> can comment.
>
> For future reference,
> Hidden Markov Models were recently split into their own project: seen here
> https://github.com/hmmlearn/hmmlearn
>
> Kyle
>
>
> On Wed, May 7, 2014 at 10:41 AM, anas elghafari
> <anas.elghaf...@gmail.com>wrote:
>
>> Hi scikit community,
>>
>> I am playing around with the Hidden Markov Mode module (multinomialHMM)
>> and one thing I don't understand is why scikit accepts emission
>> probabilities that add up to more or less than 1.
>>
>> Here is an example with two states and three emission signals:
>>
>> >>> import numpy
>> >>> from sklearn import hmm
>> >>> startprob = numpy.array([0.5, 0.5])
>> >>> transition_matrix = numpy.array([[0.5, 0.5], [0.5, 0.5]])
>> >>> model = hmm.MultinomialHMM(2, startprob, transition_matrix)
>> >>> model.emissionprob_ = numpy.array([[0, 0, 0.2], [0.6, 0.35, 0.05]])
>>
>> As you can see, I am specifying the emission proabilities for state 0 as
>> [0, 0, 0.2]. Scikit accepts this and generates predications with no
>> complaints. Is this desired behavior? Do these probabilities get normalized?
>>
>> Thanks,
>>
>> Anas
>>
>>
>> ------------------------------------------------------------------------------
>> Is your legacy SCM system holding you back? Join Perforce May 7 to find
>> out:
>> • 3 signs your SCM is hindering your productivity
>> • Requirements for releasing software faster
>> • Expert tips and advice for migrating your SCM now
>> http://p.sf.net/sfu/perforce
>> _______________________________________________
>> Scikit-learn-general mailing list
>> Scikit-learn-general@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/scikit-learn-general
>>
>>
>
>
> ------------------------------------------------------------------------------
> Is your legacy SCM system holding you back? Join Perforce May 7 to find
> out:
> • 3 signs your SCM is hindering your productivity
> • Requirements for releasing software faster
> • Expert tips and advice for migrating your SCM now
> http://p.sf.net/sfu/perforce
> _______________________________________________
> Scikit-learn-general mailing list
> Scikit-learn-general@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/scikit-learn-general
>
>
------------------------------------------------------------------------------
Is your legacy SCM system holding you back? Join Perforce May 7 to find out:
• 3 signs your SCM is hindering your productivity
• Requirements for releasing software faster
• Expert tips and advice for migrating your SCM now
http://p.sf.net/sfu/perforce
_______________________________________________
Scikit-learn-general mailing list
Scikit-learn-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/scikit-learn-general