How to solve ValueError: Expected 2D array, got scalar array instead error in python?
How to solve ValueError: Expected 2D array, got scalar array instead error in python?
我有一个 nX2 维数组,并且定义了一些 HMM 模型。现在,对于存在的每个 HMM 模型,我正在尝试计算 nx2 数组中存在的每个值的对数似然值。为此,我使用了 hmmlearn 包中的评分函数
LINK: https://hmmlearn.readthedocs.io/en/latest/api.html#hmmlearn.base._BaseHMM.score
供参考,这些是我写的代码:
定义 HMM 模型之一:
HMMmodel = hmm.GaussianHMM(n_components=3, covariance_type="full", n_iter=10)
HMMmodel.fit(Sdata2)
HMMpredict = HMMmodel.predict(Sdata2)
HMMmodel.transmat_
那么,Score函数使用的数据集:
[[-1.72914138 -1.63633714]
[-1.72914138 -1.63633714]
[-1.69620469 -1.63633714]
...
[-1.72226929 -1.63633714]
[-1.71539655 -1.63633714]
[-1.72914138 -1.63633714]]
查找分数的代码:
score1 = list()
score2 = list()
score3 = list()
score4 = list()
for x in np.nditer(Sdata3):
score1.append(HMMmodel.score(x))
score2.append(HMMmodel2.score(x))
score3.append(HMMmodel3.score(x))
score4.append(HMMmodel4.score(x))
此时遇到错误:
ValueError: Expected 2D array, got scalar array instead:
array=-1.7291413774395343.
我在这个网站上阅读了一些类似的问题,并尝试用 (-1,1) 和 (1,-1) 重塑我的数组,但它产生了同样的错误。
任何解决错误的技术将不胜感激。谢谢!
好的,我想我已经解决了这个问题。
我所做的是从数据集中取出一个 [1x2] 序列,然后使用重塑函数将其转换为 [2x1] 序列。进行此转换后,评分函数接受了它,程序 运行 顺利进行。
修改后的代码如下:
score1 = list()
score2 = list()
score3 = list()
score4 = list()
for x in Sdata3:
y = np.reshape(x, (2,1))
score1.append(HMMmodel.score(y))
score2.append(HMMmodel2.score(y))
score3.append(HMMmodel3.score(y))
score4.append(HMMmodel4.score(y))
希望这对遇到类似问题的人有所帮助。
我有一个 nX2 维数组,并且定义了一些 HMM 模型。现在,对于存在的每个 HMM 模型,我正在尝试计算 nx2 数组中存在的每个值的对数似然值。为此,我使用了 hmmlearn 包中的评分函数
LINK: https://hmmlearn.readthedocs.io/en/latest/api.html#hmmlearn.base._BaseHMM.score
供参考,这些是我写的代码:
定义 HMM 模型之一:
HMMmodel = hmm.GaussianHMM(n_components=3, covariance_type="full", n_iter=10)
HMMmodel.fit(Sdata2)
HMMpredict = HMMmodel.predict(Sdata2)
HMMmodel.transmat_
那么,Score函数使用的数据集:
[[-1.72914138 -1.63633714]
[-1.72914138 -1.63633714]
[-1.69620469 -1.63633714]
...
[-1.72226929 -1.63633714]
[-1.71539655 -1.63633714]
[-1.72914138 -1.63633714]]
查找分数的代码:
score1 = list()
score2 = list()
score3 = list()
score4 = list()
for x in np.nditer(Sdata3):
score1.append(HMMmodel.score(x))
score2.append(HMMmodel2.score(x))
score3.append(HMMmodel3.score(x))
score4.append(HMMmodel4.score(x))
此时遇到错误:
ValueError: Expected 2D array, got scalar array instead:
array=-1.7291413774395343.
我在这个网站上阅读了一些类似的问题,并尝试用 (-1,1) 和 (1,-1) 重塑我的数组,但它产生了同样的错误。
任何解决错误的技术将不胜感激。谢谢!
好的,我想我已经解决了这个问题。
我所做的是从数据集中取出一个 [1x2] 序列,然后使用重塑函数将其转换为 [2x1] 序列。进行此转换后,评分函数接受了它,程序 运行 顺利进行。
修改后的代码如下:
score1 = list()
score2 = list()
score3 = list()
score4 = list()
for x in Sdata3:
y = np.reshape(x, (2,1))
score1.append(HMMmodel.score(y))
score2.append(HMMmodel2.score(y))
score3.append(HMMmodel3.score(y))
score4.append(HMMmodel4.score(y))
希望这对遇到类似问题的人有所帮助。