빅 데이터 방향 석사 독학 기계 학습 의 길 (1) - knn 알고리즘 프로젝트 실전
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.