2016-12-05 13 views
0

pybrain.datasets.addSample()に文字列を含むデータセットを作成するにはどうすればよいですか? "文字列を浮動小数点に変換できません:ガス"というエラーが表示されます。How to do 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 

の単語の出現を表すために、自然言語ツールキットを使用して一緒にフロート型と文字列は、あなたの準備に役立つかもしれない表現ニューラルネットワークモデルを訓練するためのデータ。

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

関連する問題