簡體   English   中英

反正有沒有找到隱藏的馬爾科夫 model 准確率百分比?

[英]Is there anyway to find hidden markov model accuracy percent?

您好,我創建了一個隱藏馬爾可夫 Model,例如: https://medium.com/@natsunoyuki/hidden-markov-models-with-python-c026f778dfa7

但例如我無法理解我的系統是否預測 1 或 0 或 2 這些答案中有多少是正確的,有多少是錯誤的。

我檢查了鏈接; 您使用的是 hmmlearn 庫,還是設計了自己的 HMM?

假設您正確實現了 HMM,無論是通過您自己的設計還是使用諸如 hmmlearn 之類的外部庫,您應該在調用您的 predict 方法后收到一系列預測狀態( model.predict(observation_sequence) 假設您使用了 hmmlearn )。 要確定准確度指標,您需要與預測的 state 序列相對應的真實狀態序列。

pred = [0, 1, 0, 0, 1, 1, 2, 0]
true = [0, 0, 1, 0, 0, 1, 2, 0]

count = 0
# Assuming that pred and true are of the same length
for x in range(len(pred)):
    if pred[x] == true[x]:
        count += 1

accuracy = count / len(pred)

循環遍歷您的預測和真實狀態的索引。 在每個索引處比較兩個序列的值。 如果它們是等價的,則添加到“計數”變量中。 循環完成后,將此計數除以 pred(或 true)的長度。 這應該給你准確性。

可以通過類似方式找到其他指標,例如敏感性。 對於每個 state,您可以生成靈敏度,如下所示:

sensitivity_dict = {state:0 for state in possible_states} # Where possible_states is a container or range of all possible states, i.e., [0, 1, 2]

for x in range(len(pred)):
    if pred[x] == true[x]:
        sensitivity_dict[pred[x]] += 1

for state in possible_states:
    sensitivity_dict[state] = sensitivity_dict[state] / true.count(state) if true.count(state) != 0 else -1

其中包含所有可能狀態的字典(假設它們仍被編碼為數字)以值 0 開頭。循環遍歷預測狀態和真實狀態並檢查值是否彼此等價。 如果是,則 pred[x] 應返回 state 可用於訪問敏感度字典中 state 的計數。 如果為真,則增加。

然后,遍歷每個 state。 靈敏度通過以下方式測量:

TP / (TP + FN)

其中TP是真陽性,FN是假陰性。 我們可以簡單地通過計算每個 state 在真實狀態序列中的出現次數來獲得 TP + FN。 將敏感度字典中的計數除以出現次數,您可以獲得每個 state 的敏感度,這可能是引導您的 model 的更好指標。 但是,如果出現次數為 0,我的代碼將靈敏度表示為 -1,這意味着此 state 從未在真實序列中出現。 您可以將其設置為 0 或任何您希望將其設置為默認值的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM