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

파이브레인은 플로트 유형 만 사용합니다. 이 때문에 각 고유 한 문자열 변수에 대해 고유 한 부동 소수점 값을 생성하고자 할 수 있습니다. 튜플의 각 문자열에 대해 문자열의 각 문자에 ord() 함수를 적용 할 수 있습니다. 가장 좋은 방법은 map()과 lambda 함수가 아닌 list comprehension 문을 사용하는 것입니다.

>>> 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