這裏是我的問題,我想教使用hmmlearn一個隱馬爾可夫模型。我對這門語言很陌生,在理解列表和數組之間的區別時遇到一些困難。這裏是我的代碼:學習使用hmmlearn字符序列在Python
from hmmlearn import hmm
from babel import lists
import numpy as np
import unidecode as u
from numpy import char
l = []
data = []
gods_egypt = ["Amon","Anat","Anouket","Anubis","Apis","Atoum","Bastet","Bès","Gheb","Hâpy","Harmachis","Hathor","Heh","Héket","Horus","Isis","Ka","Khepri","Khonsou","Khnoum","Maât","Meresger","Mout","Nefertoum","Neith","Nekhbet","Nephtys","Nout","Onouris","Osiris","Ouadjet","Oupaout","Ptah","Rê","Rechef","Renenoutet","Satet","Sebek","Sekhmet","Selkis","Seth","Shou","Sokaris","Tatenen","Tefnout","Thot","Thouéris"]
for i in range(0, len(gods_egypt)):
data.append([])
for j in range(0, len(gods_egypt[i])):
data[i].append([u.unidecode(gods_egypt[i][j].lower())])
l.append(len(data[i]))
data = np.asarray(data).reshape(-1,1)
model = hmm.MultinomialHMM(20, verbose=True)
model = model.fit(data, l)
,並輸出結果
Traceback (most recent call last):
File "~~~\HMM_test.py", line 17, in <module>
model = model.fit(data, l)
File "~~~\Python\Python36\site-packages\hmmlearn\base.py", line 420, in fit
X = check_array(X)
File "~~~\Python36-32\lib\site-packages\sklearn\utils\validation.py", line 402, in check_array
array = np.array(array, dtype=dtype, order=order, copy=copy)
ValueError: setting an array element with a sequence.
我在ValueError: setting an array element with a sequence已經看到,它可能是不同的數組長度的問題,但我無法弄清楚如何解決呢。
有什麼建議嗎?
謝謝您的回答。的確,我在這裏假設'hmmlearn'中的HMM能夠生成任何類型的符號,不僅是數字,而且也是我的壞。生成序數而不是主要字母不是問題嗎?我會試着調查這個問題。 爲了回答你的問題,這段代碼的要點是要學習名稱詞典中的字母序列,以便得到一個模型,它將允許我生成一些與學習內容相同的內部結構的隨機名稱。 – Kahsius
是給每個字母分配一個數字可能是第一個嘗試的想法。 1 - > A; 2-> B,...等等,跳過你不想出現的字母。 – Eskapp