티스토리 뷰
K - Nearest Neighbor
KNN
- 특정공간 내에서 K-NN은 새로 들어온 입력값이 어떤 그룹의 데이터와 가장 가까운가 분류하는 알고리즘
- k는 몇 번째로 가까운 데이터까지 살펴볼 것인가를 정함
- k의 default는5, k의 값이 짝수일 경우 동점이 되어 하나의 결과를 도출할 수 없으므로 홀수를 사용함
장점
- 높은 정확도
- 단순하며 효율적(모델을 미리 생성하지 않음)
- 상위 k개의 데이터만 활용하기 때문에 오류 데이터가 결과에 미치지 않음
- 데이터 분산에 대한 추정을 만들 필요 없음
단점
- 데이터가 많을수록 처리 시간 증가
- 모델이 미리 생성되지 않아 새로운 데이터에 대한 학습 시간보다 분류/예측 시간이 더 걸림
거리 기준(유클리드 제곱 거리)
- 새로운 데이터와 k개의 데이터들과의 거리를 측정하기 위한 수식
최대-최소 정규화
- 변수 간에 서로 단위가 다른 데이터가 존재할 경우, 범위를 0~1로 설정하여 데이터를 관찰하는 방법
Z-점수 정규화
- 변수 간에 서로 단위가 다른 데이터가 존재할 경우, 서로 다른 값을 동일 범위로 구성하는 작업
- 변수들의 데이터를 평균이 0, 표준편차가1인 정규분포로 만드는 것
구현
from sklearn.datasets import load_breast_cancer
breast_cancer_data = load_breast_cancer()
import pandas as pd
df_data = pd.DataFrame(breast_cancer_data.data)
df_labels = pd.DataFrame(breast_cancer_data.target)
def min_max_normalize(lst):
mm_nor_list = list()
for i in lst:
maxi = max(lst)
mini = min(lst)
new_data = (i - mini) / (maxi - mini)
mm_nor_list.append(new_data)
return mm_nor_list
#데이터 정규화
for x in range(0, len(df_data.columns)):
df_data[x] = min_max_normalize(df_data[x])
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
training_data, validation_data , training_labels, validation_labels = train_test_split(df_data, df_labels, test_size = 0.2, random_state = 100)
classifier = KNeighborsClassifier(n_neighbors = 3) #k = 3, weights = "distance"로 가까운 이웃의 영향을 도 많이 받도록 가중치 설정
classifier.fit(training_data,training_labels)
print(classifier.score(validation_data, validation_labels))
'머신러닝' 카테고리의 다른 글
머신러닝 / 단순 선형 회귀 텐서플로우 구현 (0) | 2023.01.13 |
---|---|
머신러닝 / 회귀 (0) | 2023.01.11 |
머신러닝 파라미터와 하이퍼 파라미터 (0) | 2022.10.03 |
머신러닝 원핫 인코딩 (1) | 2022.09.30 |
머신러닝 get_dummies() (0) | 2022.09.24 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 차량용 이더넷
- many-to-many
- porks
- 회귀
- AVB
- 머신러닝
- AVTP
- PCA
- HTML
- automotive ethernet
- CAN-FD
- 이상탐지
- 차량 네트워크
- SOME/IP
- 논문 잘 쓰는법
- cuckoo
- automotive
- AE
- 단순선형회귀
- 크로스 엔트로피
- SVM
- problem statement
- 딥러닝
- 로지스틱회귀
- many-to-one
- Python
- Ethernet
- 케라스
- one-to-many
- json2html
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함