如何在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
答案 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