2016-12-05 219 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