빅 데이터 방향 석사 독학 기계 학습 의 길 (1) - knn 알고리즘 프로젝트 실전

2828 단어
본 고 는 대부분 이론 을 참고 하여 라 는 책 을 참고 하고 프로젝트 실전 코드 는 일부 블 로 거들 을 참고 하여 약간 수정 했다.
  • K 근린 알고리즘 원리
  • 간단 한 해석
  • 세 가지 기본 요소
  • 특징
  • 종목 실전
  • K 근린 알고리즘 원리
    K 근린 분류 알고리즘 은 이론 적 으로 비교적 성숙 한 방법 이자 가장 간단 한 기계 학습 알고리즘 중 하나 이다.이 알고리즘 은 만약 에 하나의 견본 이 특징 공간 에 있 는 k 개의 최근 이웃 견본 중 대부분이 A 류 에 속 하면 이 견본 도 A 류 에 속한다.
    간단 한 해석
    주 사 를 가까이 하면 붉 어 지고, 먹 을 가까이 하면 검 어 진다.
    세 가지 기본 요소
    1. k 값 의 선택 k 값 의 선택 은 결과 에 중대 한 영향 을 미 칠 수 있다. k 값 이 비교적 작은 것 은 입력 사례 와 가 까 운 훈련 사례 만 예측 결과 에 작용 하지만 적합 하기 쉽다 는 것 을 의미한다.k 치가 비교적 크다 는 것 은 입력 실례 와 먼 훈련 실례 도 예측 결과 에 작용 한 다 는 것 을 의미한다. 장점 은 학습 의 평가 오차 (테스트 집합 에 대한 테스트 오차) 를 줄 이 는 것 이다.단점 은 학습 의 유사 오차 (훈련 집 에 대한 훈련 오차) 가 커지 는 것 이다.그 중에서 도 예측 오 차 는 소설 에서 알 수 없 는 데이터 에 대한 예측 이 좋 을 것 으로 보인다.실제 응용 에 서 는 보통 교차 검증 방법 으로 최 적 K 값 을 선택한다.2. 규칙 다수결 3. 오 씨 거리 (마 씨 거리);cosine knn; cubic knn; weighted knn
    특징.
    1. 장점 이 간단 하고 매개 변수 평가 와 훈련 이 필요 없다.정밀도 가 높 고 소음 에 민감 하지 않다.클래스 필드 교차 혼합 에 적합 한 샘플 집합;다 분류 문제 에 적합 하 다.2. 단점 계 산 량 이 많다.해석 성 이 떨어진다.견본 이 불 균형 하여 예측 이 틀 리 기 쉽다.
    프로젝트 실전
    KNN 의 관련 알고리즘 을 바탕 으로 필기체 식별, 디지털 검증 이 성공 적 으로 응용 되 었 습 니까? 식별, 텍스트 분류, 분류 분석, 예측 분석, 모델 인식, 이미지 처리 등 입 니 다.단계: 1) 거리 값 을 최대 값 으로 초기 화하 여 검색 과정 에서 교체 할 수 있 습 니 다.
    2) 단일 테스트 샘플 과 모든 훈련 샘플 간 의 거 리 를 계산한다.
    3) 가 져 온 거 리 를 순서대로 정렬 합 니 다.
    4) 테스트 샘플 과 거리 가 가장 작은 k 개 훈련 샘플 을 선택한다.
    5) k 개 훈련 견본 이 있 는 유형의 출현 빈 도 를 확인한다.
    6) 출현 빈도 가 가장 높 은 유형 은 바로 테스트 견본 의 예측 분류 결과 이다.어떤 영 화 를 액 션 영화 로 구분 하 는 것 이 냐, 무협 영화 로 구분 하 는 것 이다.먼저 이미 알 고 있 는 라벨 의 샘플 을 구축 하고 디지털 이미지 처리 기술 을 통 해 여러 영화 에서 의 싸움 장면 과 키스 장면 수 를 통계 하고 해당 하 는 영화 라벨 을 분석한다.이후 본 영화 가 액 션 인지 멜 로 인지 코 KNN 알고리즘 을 사용 해 해결 했다.코드 는 다음 과 같 습 니 다:
    aver1=[8 3];
    covar1=[2 0;0 2.5];
    data1=mvnrnd(aver1,covar1,100);
    for i =1:100
         for j =1:2
         if data1(i,j)<0
               data(i,j) = 0
               end
         end 
    end
    label1 = ones(100,1);
    plot(data1(:,1),data1(:,2),'+');
    axis([-1 12 -1 12]);
    xlabel('     ');
    ylabel('     ');
    hold on;
    aver2=[3 8];
    covar2=[2 0;0 2.5];
    data1=mvnrnd(aver2,covar2,100);
    for i =1:100
         for j =1:2
         if data1(i,j)<0
               data(i,j) = 0
               end
         end 
    end
    label1 = 2*ones(100,1);
    plot(data2(:,1),data2(:,2),'ro');
    data=[data1; data2];
    label = [label1;label2];
    k =11;
    for movenum = 3:1:7
    	for kissnum = 3:1:7
    		test_data = [movenum kissnum];
    		distance(i) = ones(200,1);
    		for i =1:200
    			distance(i) = sqrt((test_data(1)-data(i,1)).^2+(test_data(2)-data(i,2)).^2);
    			end
    		for i =1:k
    			ma = distance(i);
    			for j=i+1:200
    				if distance(j)cls2
    			plot(movenum ,kissnum,'k.');
    		else
    			plot(movenum ,kissnum,'g*');
    		end
    		label = [label1 ;label2];
    	end
    end
    		
    
    

    좋은 웹페이지 즐겨찾기