기계 학습 알고리즘 - kNN 알고리즘
1617 단어 기계 학습
1. kNN 은 non - parametric 분류 기 로 분포 식 가설 을 하지 않 고 데이터 에서 확률 밀 도 를 직접 평가 합 니 다.
2. kNN 은 고 차원 데이터 에 적용 되 지 않 습 니 다.
장점:
1. 매개 변 수 를 평가 할 필요 가 없고 훈련 할 필요 가 없다.
2. 다 분류 문제 에 특히 적합 하 다.
단점:
1. 견본 의 용량 불 균형 은 새로운 견본 을 입력 하 는 것 이다. 이 견본 의 K 개 이웃 값 에서 대 용량 견본 이 다 수 를 차지 하고 분류 에 불리 하 다.
2. 계 산 량 이 너무 많 으 면 분류 할 텍스트 가 모든 견본 의 거 리 를 계산 해 야 한다.
개선 방법:
1. 견본 속성 을 적당 하 게 삭제 하고 결과 에 영향 을 미 치 는 작은 속성 을 삭제 합 니 다.
2. 거리 가중 권 에 대해 샘플 과 거리 가 작은 분류 대상 텍스트 의 거리 권 이 중대 하 다.
알고리즘 위조 코드:
1. 이미 알 고 있 는 분류 데이터 가 집 중 된 점 과 현재 점 사이 의 거 리 를 계산한다.
2. 거리 에 따라 차례로 정렬 하기;
3. 현재 점 과 가장 작은 k 개 점 선택 하기;
4. 앞의 k 개 점 이 있 는 분류의 출현 빈 도 를 확인한다.
5. 돌아 가기 전 k 개 점 에서 주파수 가 가장 높 은 유형 을 현재 점 의 예측 분류 로 한다.
python 코드 구현 KNN 알고리즘
def kNN(inX, dataSet, labels, k):
dataSetSize = dataSet.shape[0] #shape[0] ,
diffMat = tile(inX, (dataSetSize,1)) - dataSet #
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances**0.5
sortedDistIndicies = distances.argsort() #
classCount={}
for i in range(k): # labels
voteIlabel = labels[sortedDistIndicies[i]]
classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True) # , k
return sortedClassCount[0][0]
inX: 분류 에 사용 되 는 입력 벡터 입 니 다.곧 분류 할 것 이다.dataSet: 훈련 샘플 세트
라벨 벡터
k: k 값
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
형태소 분석은 데스크톱을 구성하는 데 도움이?문자×기계 학습에 흥미를 가져와 개인 범위의 용도를 생각해, 폴더 정리에 사용할 수 있을까 생각해 검토를 시작했습니다. 이번 검토에서는 폴더 구성 & text의 읽기 → mecab × wordcloud를 실시하고 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.