집합 분석 노트 - K 평균 값 matlab 알고리즘 (1)

소개
집합 분석 알고리즘 에 대해 유형 이 많 고 용법 도 다르다.먼저 인터넷 에 있 는 관련 블 로 그 를 수집 하고 관심 이 있 으 면 볼 수 있다.
1. 집중 분석 총론:http://blog.csdn.net/assiduousknight/article/details/16831965
2. 이 블 로 거 는 집합 분석 시 리 즈 를 만 들 었 습 니 다. 좋 습 니 다. 원리 소개 부분 봉, 일부 절 차 는 자바 언어 로 썼 습 니 다. 익숙 한 것 은 볼 수 있 습 니 다.
  색인 붙 이기:http://blog.csdn.net/zaozxueyuan/article/details/22613633
3. 기계 학습 알고리즘 시 리 즈 를 하나 더 소장 합 니 다. 물론 K - 평균치 알고리즘 이 들 어 있 습 니 다.
     색인 붙 이기:http://blog.csdn.net/qq415171148/article/details/25394477
2. 집합 분석 에 관 한 동적 집합 알고리즘
    아래 의 부분 내용 은 모델 과정 을 보고 정리 한 것 이다.
2.1. 사상: 1) K 개의 견본 을 집합 중심 으로 선택한다.
          2) 특정한 집합 준칙 (예 를 들 어 최소 거리 준칙) 에 따라 모든 견본 점 이 자신 이 속 한 초기 유형 을 찾 게 한다.
         3) 분류 가 합 리 적 인지 판단 하고 분 류 를 불합리 하 게 수정 한다.
     4) 분류 가 합 리 적일 때 까지 반복 수정
2. 상용 방법:
        ●  K - 균일 치 알고리즘
        ●  ISODATA 알고리즘 (자체 조직 데이터 분석 알고리즘 교체) (matlab 구현 책 에 있 음)
              복잡 하 다 --> 동적 조정 분류 수)
(이 알고리즘 들 은 matlab 에 자체 함수 가 있 습 니 다. (아직 사용 하지 않 았 습 니 다!) 알고리즘 의 원 리 를 알 게 된 후에 이 함수 들 을 사용 하 는 것 이 좋 을 것 입 니 다)
2.2: K - 균일 치 알고리즘   (--- > 일반적으로 몇 가지 로 나 눌 수 있 는 지 알 고 있 는 상황 에서 사용 하면 효과 가 좋다)
    사상: 집합 성능 지 표를 최소 화하 고 준칙 함수: 모든 견본 점 에서 이런 중심 까지 의 거리 제곱 과 최소 화.
    알고리즘: 1) K 개의 집합 중심, Z (1)... Z (K) 를 선택한다. 처음에는 마음대로 고 를 수 있다.
(임의로 선택 하고 선택 한 정확 도 는 선험 지식 등 과 관련 이 있 으 므 로 고려 할 수 있다)
           2) 분류 가 필요 한 샘플 을 K 개의 초기 클래스 중 하나 로 분류 하고 i = j 일 때 만족 할 수 있다 고 가정 하면 x 는 제 Sj (k) 개 에 속한다.
K: 교체 횟수 는 모든 견본 이 K 번 을 교체 해 야 그것 이 가장 가 까 운 것 이 라 고 판단 할 수 있 습 니 다.
Sj (k): j 번 째 집합, 집합 중심 은 Z (j) 입 니 다.
         3) 각 집합 중심의 새로운 값 을 계산 하여 새로운 집합 중심 벡터 를 구성한다.
      
N: 이 종류의 견본 의 개수
집합 중심 벡터 가 있 으 면 집합 준칙 함 수 를 사용 하여 함수 값 을 최소 화 할 수 있 습 니 다.
    
        (이 단계 에서 K 개의 집합 평균 값 을 계산 해 야 하기 때문에 K - 평균 값 이 라 고 합 니 다)
비교: 만약 에 두 번 째 단계 로 돌아 가 계속 교체 하고 모든 모델 견본 을 다시 분류 한다.
(이때 지난 라운드 와 변 화 된 것 은 집합 중심 점 일 뿐 이 정도 면 충분 하 다) 똑 같 으 면 알고리즘 이 수렴 된 것 이 분명 하 다 (변 하지 않 았 다).
이 알고리즘 에 대해 토론 합 니 다:
    K - 평균 값 은 그 요소 의 영향 을 받는다.
        ●  선택 한 집합 수 (가장 직접적인 영향 을 미 치기 때문에 이미 알 고 있 는 분류 에 적합 하 다)
    ●  집합 중심의 초기 분포
             ●  견본 기하학 적 성질 (고 차원 데이터 일수 록 계 산 량 이 많다)
    ●  샘플 읽 기 순서 
    진일보 한 토론 방법:
        ●  시험 에서 분류 수 를 모 르 면 서로 다른 K 값 과 서로 다른 집합 중심 을 탐색 할 수 있다 (초기 집합 중심 을 무 작위 로 만 들 수 있다).
        ●  모델 견본 자체 의 유형 간 의 차이 가 클 때 수렴 성 이 비교적 좋다.
3. 간단 한 matlab 프로그램 구현
   위의 알고리즘 사고방식 에 따라 matlab 프로그램 을 작성 하면 다음 과 같 습 니 다.
%--------------    -------------
%-----           
%---(    ,      2 ,K-means          )
%-----------------------------------
function mean = k_means_new
%%
%------------         10   ---
%--------------(          )
for i=1:100
    x1(i) = rand()*5;      %       
    y1(i) = rand()*5;  
    x2(i) = rand()*5 + 3; %       
    y2(i) = rand()*5 + 3;
end
x = [x1,x2];
y = [y1,y2];
cities = [x;y];
% plot(cities(1,:),cities(2,:),'*');  %   
%%
%------------                 
num = size(cities,2);   %    
m1 = round(rand()*num);    %              
m2 = round(rand()*num);
while m1==m2               %    
    m2 = round(rand()*num);
end                
u1 = cities(:,m1);        
u2 = cities(:,m2);
u_old = [u1,u2];
u_new = [u2,u1];
%%
while u_old ~= u_new   %             
    u_old = u_new ;    %        
    for j=1:num      %       ,      
        dis1 = norm(cities(:,j)-u1);  %   ,  
        dis2 = norm(cities(:,j)-u2);
        if dis1>=dis2  c(j) = 2;    %    ,   
        else c(j) = 1;
        end
    end
    index1 = find(c==1);   %     
    index2 = find(c==2);   %...
    sum1 = sum(cities(:,index1),2);  %        x,y    
    sum2 = sum(cities(:,index2),2);  %...
    u1 = sum1/length(index1);      %      ,        
    u2 = sum2/length(index2);     %...
    u_new = [u1,u2];        %        
end
%%
hold on,plot(cities(1,index1),cities(2,index1),'*');  %   
hold on,plot(cities(1,index2),cities(2,index2),'+');  
hold on,plot(u1(1),u1(2),'o',u2(1),u2(2),'o');
mean = u_new;   

함 수 를 직접 실행 하면 됩 니 다. 프로그램의 두 번 째 줄 의 디지털 매개 변 수 를 바 꾸 어 초기 에 생 성 된 점 갯 수 를 다 르 게 하여 효 과 를 테스트 합 니 다.
시작 점 10 개:
  聚类分析笔记-K均值matlab算法(一)_第1张图片
시작 점 20 개:
  聚类分析笔记-K均值matlab算法(一)_第2张图片
시작 점 50 개:
  聚类分析笔记-K均值matlab算法(一)_第3张图片
시작 점 100 개:
  聚类分析笔记-K均值matlab算法(一)_第4张图片
여러 번 실험 해 보 았 지만 모두 정확 하고 거의 유형 을 잘못 나 누 지 않 았 으 며 K - 평균치 가 이미 알 고 있 는 분류 에 대한 문제 효과 가 확실히 괜찮다 는 것 을 알 수 있다.

좋은 웹페이지 즐겨찾기