2015-01-01 8 views
-4

실제 데이터 세트 (.csv 파일)에서 자체 구성지도 (SOM)로 작업했습니다. 최소 최대 정규화를 기반으로 데이터를 정규화하여 효율성을 높이려고합니다. .Python의 최소 최대 정규화

하지만 오류가 발생했습니다. 오류는 "unsupported operand type(s) for list and float"입니다.

나는 더 나은 해결책을 찾을 수 없으며 나는 이것으로 완전히 잃어버린다.

for i in range(num): 
    trr=eval(str(arr[i]))[0:-31] 
print trr 
for i in range(num): 

    normalized = (trr-min(trr))/(max(trr)-min(trr)) 
print normalized 

하고 같은 시작 부분에 trr을 선언 : 어쨌든, 들여 쓰기가 깨진 것 같다

trr = [[0 for x in range(num)] for x in range(num)] 
+0

음, 오류 자체는 2 개의 부동 소수점 대신 목록과 부동 소수점을 사용하여 수학을 수행하려고한다는 것을 의미합니다. – Basic

+0

고맙습니다. 문에서 오류가 발생했습니다 ---> 정규화 된 = (trr-min (trr))/(max (trr) -min (trr)). 방금 min (trr) 및 max (trr)) 그리고 두 가지 모두 '목록'형식입니다. 그러나 무슨 일이, 나는 "목록 및 형식에 대한 지원되지 않는 피연산자 유형 (들)"이번에도 '목록'유형의 두 가지가 발생합니다. – Pooja

답변

2

, 나는 그것을 해결하는 방법을 잘 모르겠지만, 키 라인은 다음과 같습니다

normalized = (trr-min(trr))/(max(trr)-min(trr)) 

분명히 여기에 trr이 목록입니다. (또는 minmax을 찾고 있지 않더라도) 산술 연산을 시도하고 있습니다. 좋지는 않습니다. 다음을 권하고 싶습니다.

base = min(trr) 
range = max(trr) - base 
normalized = [(x-base)/range for x in trr] 

나는 당신이 생각하는 것을 달성 할 가능성이 가장 높습니다.

+0

감사합니다 .. 시도했지만 문제가 여전히 존재합니다.이 오류는 다음과 같습니다 --- "지원되지 않는 피연산자 유형 (목록 및 목록)"----> range = max (trr) - base. – Pooja

+0

'인쇄'할 때'trr'의 값은 무엇입니까? 또한'print type (base), base'를 계산 한 직후에 알려주십시오. 제 생각에는 (** 추측 하건데 ** trr은 숫자 목록이지만, 아마도리스트 목록이거나 더 악의적 인 목록 일 것입니다 - ** show ** us 유형과 가치를 추측하기보다는 강요합니다! –