1 a n G u a g e /PYTHON

[PYTHON] &[machine learning] KNeighborsClassifier / LogisticRegression / LinearSVC 를 이용한 손글씨 분류

동혼 2019. 8. 23. 12:36

digit_train.zip
8.9 MB

 

digit_train 파일을 이용하여 손글씨를 분류용선형모델연습하는 방법

위 첨부파일은 python에 업로드하기 위한 파일 

 

 

 

 

 

1. 필요한 것을 import 해준다

numpy는 필요없는데 중간에 추가해줌 

중간 주석으로 단 순서대로 진행할 예정이다 

사용된 데이터는 위에 첨부된 digit_trian.csv 다

 

2. 탐색적 데이터 분석 = EDA 을 통해 데이터 구성을 본다

해당 데이터 (digit_data 는 이미지를 픽셀단위를 표시한 것으로 label 로 뜨는건 미리 써놓은 답 이다 )

즉 index 0 은 1을 표시한 것

 

 

 

 

img를 픽셀단위로 자름 

 

 

최대값, 최솟값을 보고 아래 표를 통하여 어떤 값이 많이 분포하였는지 확인 할 수 있다

 

 

 

원래 이미지를 보기위해서는 28,28 로 구성되었기때문에

img의 값을 reshape 해준다. 색은 gray 로 선택해줌 

 

 

 

다른 이미지를 확인해보기 위하여 img3 실행 (index번호를 붙였기때문에 4가 나온다)

img3을 전체에서 자른후 

- 자른 이미지를 reshape한다 

참고로 matplotlib.pyplot 에는 이미지를 보여주는 함수 < imshow > 가 내장되어있다 

 

 

 

KNeighborsClassifier

LogisticRegression

LinearSVC

 

세가지 모델로 데이터를 train 시키고 후에 test점수를 매겨 볼 거다

사용을 위한 import 를 해준다 

 

 

 

 

 

Knn , logist , linear 에 대하여 각각 train 을 시켜본다 

참고로 기본 cv 는 5로 설정한다. 

(cv : 해당 데이터를 5로 잘라 데이터 분석함 / 값을 바꾸면 수치도 달라진다 )

 

해당 수치는 

Knn : 0.9165460039643658
logist : 0.8232028781559416 
linear : 0.8248100718169964

으로 나왔다. 

 

knn은 거리를 이용하는 거라 다른 것보다 시간이 걸린다

 

_______

현재 수치로는 

  • 셋중 Knn 이 제일 가장 적합함
  • Knn은 거리를 계산한 값이기에 그럴 가능성이 더 높다
  • 선형은 픽셀단위라 픽셀이 조금 틀어지면 다른 값으로 인지해서 성능이떨어진다 
  • Knn 에 기본 5 보다 크고 작게 하여 총괄값을 바꿔볼 수 있다
  • 선형 도 튜닝 값을 따로 하여 값을 바꿔본다

를 생각할 수 있다

 

  v 다른 수치를 알아보기 위하여 하이퍼파라미터 튜닝을 시도한다 

 

 

다른 수치를 알아보기 위하여 하이퍼파라미터 튜닝을 시도한다 

모델마다 다른 값으로 시도한다

train > test  할 경우 test에 맞춘 모델이 나올 수 있기에 교차검증 (Cross validation) 을 시도한다

 

교차검증을 하는 것이 ln[ 40 ] 이다 

knn은 1부터 100까지 하였다.

 

 

logist는 0.001 , 0.01, 0.1 , 10 , 100, 1000 로 train 해본다

들어가는 c값이 크면 규제를 약하게, 작으면 규제를 강하게 준다

 

logist는 알림이 뜬다 오류는 아니니 그대로 진행하면 된다 

 

 

 

 

LinearSVC은 측정시 랜덤값이 들어가서 같은 자료라도 사람마다 사람마다 다르다

linear 도 알림이 뜬다 오류는 아니니 그대로 진행하면 된다 

 

 

 

 

튜닝 후 제일 높은 수치를 각 모델마다 찾아 평가를 한다

 

 

 

평가시에는 fit. train 값을 이용하여 test점수를 매긴다 

test 점수를 통하여 어떤 모델이 해당 data에 적합한지 알아 낼 수 있다 .

 

해당데이터에는 knn 방법이 제일 적합한 것으로 알 수 있다.