2016-12-05 217 views
0

如何使用pybrain.datasets.addSample()中的字符串构建数据集?我收到一个错误,说“不能将字符串转换为float:gas”。如何将字符串添加到ClassificationDataSet?

我是否缺少一些东西,如索引值或输入与目标之间的定义链接?我不确定如何阅读关于此的文档。谢谢你的帮助。

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

它看起来像pybrain只使用浮点类型。因此,您可能需要为每个唯一的字符串变量创建一个唯一的浮点值。也许可以对字符串中的每个字符应用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型使用自然语言工具包来表示字的出现一起准备可以帮助你用于训练神经网络模型的数据。

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