본문 바로가기

컴퓨터219

isnan과 isinf nan 이나 inf 는 floating point 연산을 할 때 잘못된 연산에 의해 발생하는 것으로, 0 으로 나누거나 숫자가 아닌 것으로 나누려 할 때 발생하는 에러이다. 그 이외에도 꽤 많다. exp 가 over-flow 가 발생하거나, log(0) 이거나, 여하튼 여러 원인에 의하여 제대로 계산할 수 없을 경우 반환되는 값이다. 메모리가 inf 인지 nan 인지는 표준으로 정해져 있다. nan 은Not a Number, inf는 쉽게 예측할 수 있듯이 infinity 에서 왔겠지. 아놔, 연산하다 보면 아주 이놈의 inf 와 nan 때문에 열받을 때가 아주 한두번이 아니다. 에러 처리를 한다고 해도 요리조리 빠져 나가서 결국은 이놈의 nan 이나 inf 때문에 중간에 멈추거나 할 때가 있다. 따라서.. 2010. 12. 6.
Fisher's linear discriminant 구현 지난 번에 알아 본 Fisher's Linear Discriminant 의 원리를 이제 C++로 구현해 보자. 또한 지난 번 글에서 matlab 으로 테스트 해 보았던 m 코드의 일부를 약간 설명한다. Matlab 에서의 matrix 를 다루는 방식이 FLD 원리 편에서 본 matrix 와 조금은 다르기 때문에 약간의 설명이 필요하다. 또한 matrix inverse 를 구하는 것을 직접 구현하기에는 무리가 따르므로 다른 사람이 구현해 놓은 것을 사용한다. 우리가 직접적으로 계산해야 하는 것은 다음의 수식이다. w는 벡터이고, 우리는 이 벡터의 '방향'만이 필요하므로 위에서 r 은 1로 둔다. Sw 와 m1, m2 는 다음과 같다. 우선 m1 과 m2 부터 구해 보자. 실제로 우리가 다룰 data 는 위.. 2010. 12. 3.
엑셀에서 필터 사용하기 필터는 특정 조건을 만족하는 데이터만을 보여 주고 나머지 데이터는 숨기는 기능을 할 수 있는 방법을 제공해 준다. 필터는 사용법이 간단하면서도 매우 유용하므로 익혀 두는 것이 좋다. 필터를 거는 방법은 매우 간단하다. 필터를 걸고자 하는 열을 선택한 이후 Data -> Filter 를 누르면 된다. 위와 같이 필터를 걸면 제일 윗 칸, 즉 헤더로 인식된 칸에 다음과 같은 표시가 된다. 이제 원하는 조건에 맞는 데이터만을 보고자 할 때는 위의 저 세모가 생긴 칸을 누르면 나오는 여러 기준들 중 적절한 것을 선택하면 된다. 주어진 열이 숫자로 구성되어 있는지 텍스트로 구성되어 있는지 등에 따라 적절한 기준을 선택할 수 있게끔 되어 있는데 그 중 몇 예를 보면 다음과 같다. 만약 숫자로 구성되어 있는 열이라고.. 2010. 12. 1.
Fisher's linear discriminant 원리 Fisher's linear discriminant (FLD) 는 데이터를 여러 변수들의 선형결합으로 표현하였을 때 서로 다른 그룹을 잘 구분할 수 있게 해 주는 coefficient 를 찾는 방법이다. 그림으로 보자면 다음과 같다. 위는 그림으로 그려서 보이기 편하라고 2개의 변수만을 사용하여 나타낸 것인데, 저렇게 두 그룹을 잘 구분할 수 있는 직선의 방정식을 찾는 방법이 Fisher's linear discriminant 를 이용한 방법이다. 위 직선의 방정식에 필요한 상수는 closed-form 으로 정확히 구해진다. 원리를 알아 보고, matlab 으로 테스트도 해보고, C++로 구현해서 써먹어 보자. (오늘은 원리와 matlab 으로의 테스트까지만. 구현은 내일 해보자) 직관적으로 생각할 수 .. 2010. 11. 30.