0.알고리즘 설명
KNN 알고리즘은 주어진 데이터 포인트의 클래스(레이블)를 예측하기 위해
가장 가까운 'k'개의 이웃 데이터 포인트들을 찾아, 그들의 클래스 중 가장 많은 클래스를 예측값으로 선택하는 방법이다
'가장 가까운' 이라는 것은 일반적으로 유클리디안 거리(Euclidean distance) 또는
다른 유사도 척도를 사용하여 측정이 된다
1. 데이터 분리
머신러닝을 위해서는 기본적으로 타겟 데이터와
변수들을 분리해야한다
x = data.drop(target, axis=1)
y = data[target]
코드로 변수 x와 y에 각각 변수 데이터와 타겟 데이터를 넣어주었다
여기서 target은 데이터프레임에서 결과값의 인덱스명이다
다음으로 학습에 사용할 데이터를 분리한다
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.3 ,random_state=1 , stratify= )
train_test_split을 임포트하고
x,y 데이터와, 해당 데이터에서 이후 테스트에 사용할 데이터의 비율을 test_size 옵션에 적어주면
데이터 내에서 랜덤으로 1-test_size 비율 만큼의 x,y값과 test_size 비율 만큼의 x,y값
4개를 반환한다
random_state옵션은 랜덤의 시드를 정해주는 옵션인데 시드를 정해주면 해당 시드에 해당하는 랜덤값을 반환한다
따로 적어주지 않을경우 무작위로 값이 반환된다
stratify= 옵션은 지정한 데이터의 값을 랜덤으로 돌릴때 같은 비율로 넣는 옵션이다
예를 들어 y의 범주 값이 여러 개 일 때 비율을 같게 학습시키고 싶다면 y를 넣어주면 된다
2 데이터 학습
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
코드를 통해
KNeighborsClassifier 함수와 accuracy_score 함수를 불러온다
이후
model = KNeighborsClassifier()
코드로 학습 값을 저장할 변수를 지정 할 수 있다
()안에 여러 옵션이 있는데
- n_neighbors: 선택할 이웃의 수 (기본값: 5)
- weights: 예측에 사용되는 가중치 함수 (기본값: 'uniform')
- 'uniform': 모든 포인트에 동일한 가중치 부여
- 'distance': 거리에 반비례하여 가중치 부여
- algorithm: 근접 이웃을 계산하는데 사용되는 알고리즘 (기본값: 'auto')
옵션이다 당연하지만 옵션에 따라 모델의 정확도가 달라진다
model.fit(x_train, y_train)
fit매소드로 학습을 시킬 수 있다
+ 첫번째
3 완성된 모델 테스트 하기
y_pred = model.predict(x_test)
코드로 완성된 모델에 테스트를 위해 만든 x_test 값을 넣어서 y_pred에 저장했다
반환되는 값은 넘파이 배열로 반환이 된다
accuracy_score(y_test,y_pred)
해당 코드를 사용하면 예측값과 실제 값을 통해 모델의 정확도를 평가 할 수 있다
'파이썬 > scipy , 이변량분석' 카테고리의 다른 글
파이썬 데이터분석 단변량, 이변량 분석 도구 정리 (0) | 2023.09.03 |
---|---|
파이썬 기초 mosaic 를 사용한 범주대 범주 비교 그래프-mosaic() (0) | 2023.09.02 |
파이썬 기초 scipy.stats 카이제곱검정 - chi2_contingency() feat.교차표 (0) | 2023.09.02 |
파이썬 기초 pandas 범주끼리 비교 교차표-crosstab() (2) | 2023.09.02 |
파이썬 기초 scipy.stats 3개이상의 범주에 대한 anova구하기-spst.f_oneway() (0) | 2023.09.02 |