如何向 ClassificationDataSet 添加字符串?

How to do I add strings to ClassificationDataSet?

如何使用 pybrain.datasets.addSample() 中的字符串构建数据集?我收到一个错误 "cannot convert string to float: gas"。

我是否遗漏了一些东西,比如输入和目标之间的索引值或定义的 link?我不确定如何阅读有关此的文档。感谢您的帮助。

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

看来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://datascience.stackexchange.com/questions/869/neural-network-parse-string-data