使用pyBrain _splitWithPortion时出现的AttributeError - 对象类型是否已更改?

2024-10-01 09:20:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我按照基本分类教程datasets.html#classificationdataset">here测试pybrain,并用一些更真实的数据here对其进行不同的理解。但是,我在应用trnda.\u convertToOneOfMany()时收到此错误,错误为:

AttributeError: 'SupervisedDataSet' object has no attribute '_convertToOneOfMany

数据集创建为classification.ClassificationDataSet对象,但是调用splitWithProportion似乎会改变它监管数据集对象,所以作为Python的新手,这个错误看起来并不像监管数据集没有那种方法,classification.ClassificationDataSet做。Code here。在

然而,同样的代码在如此多的教程中被使用,我觉得我一定是遗漏了一些东西,因为很多人都有它的工作。我研究了github上对代码库的更改,但是没有任何关于这个函数的内容,我也尝试过在python3vs2.7下运行,但是没有什么不同。如果有人能帮我回到正确的道路上,我将不胜感激。在

^{pr2}$

Tags: 数据对象代码herehtml错误分类教程
3条回答

splitWithProportion的实现在PyBrain版本0.3.2和0.3.3之间发生了变化,引入了这个破坏多态性的bug。
到目前为止,该库自2015年1月以来一直没有更新,因此使用某种变通方法是目前唯一的行动方案。在

您可以在此处检查责任提交:https://github.com/pybrain/pybrain/commit/2f02b8d9e4e9d6edbc135a355ab387048a00f1af

我有同样的问题,我想我已经解决了:看这个pull request。在

(Python2.7.6,PyBrain 0.3.3,OS X 10.9.5)

我也有同样的问题。我添加了下面的代码使它在我的机器上工作。在

tstdata_temp, trndata_temp = alldata.splitWithProportion(0.25)

tstdata = ClassificationDataSet(2, 1, nb_classes=3)
for n in xrange(0, tstdata_temp.getLength()):
    tstdata.addSample( tstdata_temp.getSample(n)[0], tstdata_temp.getSample(n)[1] )

trndata = ClassificationDataSet(2, 1, nb_classes=3)
for n in xrange(0, trndata_temp.getLength()):
    trndata.addSample( trndata_temp.getSample(n)[0], trndata_temp.getSample(n)[1] )

这会将tstdatatrndata转换回ClassificationDataSet类型。在

相关问题 更多 >