JJC's 테크니컬 다이어리

Octave 가우시안 분포 학습 데이타 생성 본문

Pattern Recognition

Octave 가우시안 분포 학습 데이타 생성

털털한JJC 2016. 3. 27. 10:47

Octave를 사용하여 분류를 위한 데이타 생성하는 예제 입니다.

C1클래스는 평균 (0;0) 공분산 (4 0;0 4)

C2클래스는 평균 (5;5) 공분산 (4 0;0 4) 

를 갖도록 데이타를 생성합니다.


%100개의 샘플을 만듭니다.

N=100; % 각 클래스의 데이터 개수

%repmat (A, M, N) 함수 : 매트릭스 구성을 위하여 활용.

%A 행렬을 각 요소로 복사하여, M x N 크기의 블록 행렬을 구성하여 반환하는 함수

m1=repmat([0,0],N,1); %클래스 C1의 평균을 가지는 행렬 m1

m2=repmat([5,5],N,1); %클래스 C2의 평균을 가지는 행렬 m2

s1=[4 0;0 4]; %클래스C1의 공분산 행렬

s2=[4 0;0 4]; %클래스C2의 공분산 행렬

% randn 함수: Octave에서 help randn 명령으로 상세 설명 볼 수 있음

% 평균=0 이며 분산=1 인 정규 분포 랜덤 요소를 가지는 행렬을 반환하는 함수

X1=randn(N,2) * sqrtm(s1) + m1; %클래스C1의 데이타 생성

X2=randn(N,2) * sqrtm(s2) + m2; %클래스C2의 데이타 생성

% plot (X, Y, FMT) 함수

% 이차원 평면상에 산점도를 그린다.

% X1(:,1) 즉, X1행렬의 1열을 X축, X1(:,2) 즉, X1행렬의 2열을 Y축 으로 하여 산점도를 생성

plot(X1(:,1), X1(:,2), '+');

hold on;

plot(X2(:,1), X2(:,2), 'd');

% 생성된 X1, X2를 파일로 저장

save data4_1 X1 X2;