분류 전체보기691 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. vector를 sort 한 이후 문제가 생길 때 자신이 만든 비교함수(binary predicate)를 이용하여 vector 를 비교를 하고자 했는데 에러가 난 상황. 이 경우 주로 sort 를 두 번째 하려고 할 때 에러가 발생. 그렇다면 binary predicate 가 잘못 정의되었을 가능성이 있다. 환경 : Visual C++ 6.0 on Windows XP SP3 (급해서 일단 VC 6.0 으로 작업. 나도 VC 2010 있다. -_-;;;) 디버그 모드로 실행시켰을 때, 다음과 같은 에러가 났다. Access violoation. 이 에러는 일반적으로 접근하지 말아야 하는 메모리를 접근했을 때 나타나는 에러로, release mode 라면 다음과 같은 친근한(?) 에러 메세지를 볼 수 있다. 다시 debug mode로 실행시켜서 call s.. 2010. 11. 30. 이전 1 ··· 99 100 101 102 103 104 105 ··· 173 다음