python - 在 PyStruct 中拟合 SSVM 模型时出现 IndexError

标签 python numpy machine-learning

我正在使用 pystruct Python 模块来解决对讨论线程中的帖子进行分类的结构化学习问题,并且在训练 OneSlackSSVM 时遇到了问题> 与LinearChainCRF一起使用。我正在关注OCR example from the docs ,但似乎无法调用 SSVM 上的 .fit() 方法。这是我收到的错误:

Traceback (most recent call last):

File "<ipython-input-47-da804d135818>", line 1, in <module>
ssvm.fit(X_train, y_train)

File "/Users/kylefth/anaconda/lib/python2.7/site-  
packages/pystruct/learners/one_slack_ssvm.py", line 429, in fit
joint_feature_gt = self.model.batch_joint_feature(X, Y)

File "/Users/kylefth/anaconda/lib/python2.7/site-       
packages/pystruct/models/base.py", line 40, in batch_joint_feature      
joint_feature_ += self.joint_feature(x, y)

File "/Users/kylefth/anaconda/lib/python2.7/site-    
packages/pystruct/models/graph_crf.py", line 197, in joint_feature
unary_marginals[gx, y] = 1

IndexError: index 7 is out of bounds for axis 1 with size 7

下面是我编写的代码。我厌倦了像文档示例中那样构造数据,其中整体数据结构是一个 dict ,其中包含 datalabels折叠

from pystruct.models import LinearChainCRF
from pystruct.learners import OneSlackSSVM

# Printing out keys of overall data structure
print threads.keys()
>>> ['folds', 'labels', 'data']

# Creating instances of models
crf = LinearChainCRF()
ssvm = OneSlackSSVM(model=crf)

# Splitting up data into training and test sets as in example
X, y, folds = threads['data'], threads['labels'], threads['folds']
X_train, X_test = X[folds == 1], X[folds != 1]
y_train, y_test = y[folds == 1], y[folds != 1]

# Print out dimensions of first element in data and labels
print X[0].shape, y[0].shape
>>> (8, 211), (8,)

# Fitting the ssvm model
ssvm.fit(X_train, y_train)
>>> see error above

在尝试拟合模型后,我立即收到上述错误。 X_trainX_testy_trainy_test 的所有实例都有 211 列,并且所有标签尺寸似乎都匹配以及相应的训练和测试数据。任何帮助将不胜感激。

最佳答案

我觉得你所做的一切都是对的,这是https://github.com/pystruct/pystruct/issues/114 。 您的标签 y 需要从 0 到 n_labels 开始。我认为你的从 1 开始。

关于python - 在 PyStruct 中拟合 SSVM 模型时出现 IndexError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28651801/

相关文章:

python - 将 int 添加到 uint8 时出现奇怪的类型转换?

python - Keras 精度不变

python - 如何从 imblearn 中的 RandomUnderSampler 获取样本索引

machine-learning - 为什么不只使用 Canopy 聚类而不是与 KMeans Mahout 结合使用

Python 多线程列表追加给出了意想不到的结果

java - 从pyspark手动调用spark的垃圾回收

python - 加快内核估计的采样

python - 计算每个 pandas 列中数据出现的次数

python - 使用 matplotlib 创建一个饼图

python - 无法对 3 段进行分段 numpy