python - Pybrain 神经网络 : _convertToOneOfMany error

标签 python machine-learning pybrain

我是 Pybrain 的新手,正在尝试构建一个神经网络。首先,我遇到了the error described here :

AttributeError: 'SupervisedDataSet' object has no attribute '_convertToOneOfMany'

我尝试了该线程的已接受答案中描述的解决方法。虽然它看起来有效,但它现在给了我一个新的错误。这些是我的代码的相关 block :

将文件读入分类数据集的部分。 3 个输入属性,2 个类,拆分读取数组,前 3 列为“输入”,最后一列为“目标”:

ds = ClassificationDataSet(inp=3, target=1, nb_classes=2)
tf = open('datafile.txt')
a = np.loadtxt(tf) 
a = np.hsplit(a, (3,4))
ds.setField('input', a[0])
ds.setField('target', a[1])

构建简单网络的部分,对于 pybrain 来说非常标准:

inLayer = SigmoidLayer(3)
hiddenLayer = SigmoidLayer(5)
outLayer = SigmoidLayer(2)

fnn.addInputModule(inLayer)
fnn.addModule(hiddenLayer)
fnn.addOutputModule(outLayer)

in_to_hidden = FullConnection(inLayer, hiddenLayer)
hidden_to_out = FullConnection(hiddenLayer, outLayer)

fnn.addConnection(in_to_hidden)
fnn.addConnection(hidden_to_out)

fnn.sortModules()

这是解决方法,如上所述:

tstdata_temp, trndata_temp = ds.splitWithProportion(0.25)

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

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

trndata._convertToOneOfMany()
tstdata._convertToOneOfMany()

这是我在第一个转换行遇到的错误:

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

最佳答案

我不知道你的“目标”字段元素有什么值,但由于类标签从 1 而不是 0 开始,我在 _convertToOneOfMany() 中遇到了同样的错误。

_convertToOneOfMany() 将数据集的“目标”字段从类标签数组(如大小为 [n_samples,1] 的 0、1、2)转换为标签数组(如大小为 [n_samples, 100、010、001, n_classes](它确实如此:0 -> 100、1->010 和 2->001)。因此,如果您有 3 个标记为 1、2 和 3 的类,_convertToOneOfMany() 将执行 1->010、2->001、3-> 错误!

此函数的代码在这里:https://github.com/pybrain/pybrain/blob/master/pybrain/datasets/classification.py在第 144 行,类标签 (oldtarg[i]) 用作 newtarg 的列索引。

关于python - Pybrain 神经网络 : _convertToOneOfMany error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28453408/

相关文章:

python - tf.keras `predict()` 得到不同的结果

python - 神经网络的加权输入

python - 如何使用 PyBrain 网络拟合函数?

python - 对于已经定义的列表对象,出现名称错误。应该提供任何可能的帮助,

python - 如何运行特定的 scipy 测试

python - djangorest框架多个url参数

python - 如何使用 GPU 加速网络训练?

python - 用于学习 10 位分类的 Pytorch MNIST 自动编码器

machine-learning - scikit-learn RandomForestClassifier 中特征重要性和森林结构如何相关?

machine-learning - 什么被认为是 2018 年最好的图像分类神经网络?