집합 분석 노트 - 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 개:
시작 점 20 개:
시작 점 50 개:
시작 점 100 개:
여러 번 실험 해 보 았 지만 모두 정확 하고 거의 유형 을 잘못 나 누 지 않 았 으 며 K - 평균치 가 이미 알 고 있 는 분류 에 대한 문제 효과 가 확실히 괜찮다 는 것 을 알 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Linux Shell 프로 그래 밍 - 텍스트 처리 grep, sed사용자 가 지정 한 '모드' 에 따라 대상 텍스트 를 일치 하 게 검사 하고 일치 하 는 줄 을 인쇄 합 니 다. ##포함 되 지 않 음, 역방향 일치 \ ##키워드 앞 뒤 가 맞지 않 고 키워드 만 일치 합 니 다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.