如何在ClassificationDataSet中添加字符串?

时间:2016-12-05 19:08:46

标签: python pybrain

如何在pybrain.datasets.addSample()中使用字符串构建数据集?我收到的错误是“#34;无法将字符串转换为浮点数:gas"。

我是否遗漏了某些内容,例如索引值或输入与目标之间的已定义链接?我不确定如何阅读有关此文档的文档。谢谢你的帮助。

import pybrain
from pybrain.datasets import ClassificationDataSet

#set up input and target variables
ds = ClassificationDataSet(inp=2, target=1)

#add data to dataset
ds.addSample(('gas', 'blue'), ('car',))
ds.addSample(('desiel', 'brown'), ('truck',))

# error
ValueError: could not convert string to float: gas

1 个答案:

答案 0 :(得分:0)

看起来pybrain只使用float类型。因此,您可能希望为每个唯一的字符串变量创建唯一的浮点值。对于元组中的每个字符串,可以将ord()函数应用于字符串中的每个字符。最佳实践是使用列表推导语句而不是map()和lambda函数。

>>> ord('a')
97
>>> ord('\u00c2')
192

或喜欢

>>> [ord(c) for c in 'Hello World!']
[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]

所以也许这样:

>>>x = [('gas', 'blue'),]

>>>for var in x:
>>>    # for each letter of word
>>>    for c in var:
>>>        # list of ord() values for each letter of word
>>>        letter = [ord(i) for i in c]
>>>        # convert list to string
>>>        number = [str(i) for i in letter]
>>>        # join() to combine list into a single string
>>>        word = ''.join(number)
>>>        print c, word
gas 10397115
blue 98108117101

将字符串表示为float类型以及使用Natural Language Tool Kit表示单词的出现可能有助于准备数据以训练神经网络模型。

Python3 convert Unicode String to int representation

https://stackoverflow.com/questions/36680250/pybrain-neural-network-nominal-string-inputs

https://datascience.stackexchange.com/questions/869/neural-network-parse-string-data