저번 시간에 이어서 KNN 구현을 마무리해자.
지금부터는 본격적으로 관련 라이브러리를 활용하여 완성을 할 것이다.
1 2 3 4 5 6 7 8 9 | ## Step.2 Training a model on the data ### # "class" 라이브러리 로드 install.packages("class") library(class) wbcd_test_pred<-knn(train=wbcd_train, test=wbcd_test, cl=wbcd_train_labels, k=21) | cs |
class 라이브러리의 knn 함수를 사용하여 KNN 알고리즘을 시행하게 된다.
여기서 train은 위에서 나눈 학습 데이터, train은 검증 데이터, cl은 우리가 Target 변수로 하고 있는
Diagnosis 칼럼을 뜻하는데, 여기서 train_labels는 train data의 diagnosis 칼럼만 따로 추출해 놓은 것을 뜻한다.
여기서 K는 전 포스팅 인트로에 설명하였던, 몇 개의 데이터를 계산에 포함시킬거냐에 관한 것이다.
보통 총 데이터셋의 제곱근의 값으로 계산하며, 여기서는 21로 지정하여 진행하도록 하겠다.
1 2 3 4 5 6 | # "gmodels" 라이브러리 로드 library(gmodels) # 예측값과 실제값의 교차표 생성 CrossTable(x=wbcd_test_labels,y=wbcd_test_pred,prop.c=FALSE) #2개가 오분류 | cs |
이렇게 생성한 예측값의 정확도를 확인해보기 위해서, gmodels 라이브러리의 크로스테이블을 사용한다.
아래에서 확인할 수 있는 것처럼 약 98퍼센트의 예측 정확도를 보여주고 있다.
이상으로 KNN알고리즘 구현을 마무리 할 수 있지만, 전 포스팅에서 진행하였던 최대최소 정규화 외에,
다른 정규화 방법중 하나인 Z점수 표준화 공식을 간단히 설명하고 마무리하도록 하겠다.
공식은 X-평균 / 표준편차 이며, R에서는 아래와 같이 구현한다.
1 2 3 4 5 6 | # 데이터 프레임를 z-score 표준화하기 위해 scale() 함수 사용 wbcd_z<-as.data.frame(scale(wbcd[-1])) # 변환이 정확하게 적용되었는지 확인 summary(wbcd_z$area_mean) ## z는 평균이 0 | cs |
R에서는 scale함수로 이를 간단하게 시행할 수 있으며, 아래처럼 summary 함수를 통해 성공적으로 변환이 되었는지
확인할 수 있다.
다른 과정은 동일하며 wbcd_n 자리에 wbcd_z를 넣어서 동일하게 진행하면 된다.
'데이터분석 > with R' 카테고리의 다른 글
[R] 암상자 기법과 신경망이론의 정의 및 구성 (0) | 2017.12.19 |
---|---|
[R] 유클리드 거리 정의와 계산법 (0) | 2017.12.17 |
[R] R로 구현하는 KNN(게으른 학습) 알고리즘 - (1) (0) | 2017.12.16 |
[R] 부스팅(앙상블)을 활용한 의사결정나무 정확도 향상 (4) | 2017.11.19 |
[R] R로 구현하는 의사결정나무(Decision Tree) (0) | 2017.11.12 |