바닥부터 시작하는 인공지능

KNN 알고리즘을 이용하여 붓꽃의 품종 구하기

HappinessChung 2019. 7. 18. 21:29
반응형

 

목표:  붓꽃의 곷잎, 꽃받침, 폭, 길이를 측정한 값을 이용하여 붓꽃의 품종을 분류하기.


붓꽃의 품종을 분류한 데이터를 가지고있으므로 지도학습에 속하고, 몇가지 선택 사항중 하나를 선택하는 문제이므로 분류에 해당한다.

출력될 수 있는 값들을 클래스라고 하므로 이 문제는 붓꽃의 클래스를 분류하는 문제이다. 

 




클래스: 출력되는 결과값의 종류. 이 경우에는 붓꽃의 품종에 해당.
레이블: 특정 데이터에 해당하는 출력값. 

클래스는 레이블의 종류, 즉 큰 틀이다.
 붓꽃의 품종을 구분하는 과정을 함수 H(x)라고 하면 붓꽃의 꽃잎, 꽃받침, 폭, 길이 등은 X값에 해당하고, 레이블은 y값에 해당한다.
입력 데이터 하나하나는 정의역,  클래스는 공역에 해당한다고 볼 수 있다.

붓꽃 데이터셋은 scikit-learn의 dataset모듈에 포함되어 있다. 이를 이용하여 데이터를 적제할 수 있다. (데이터적제 == 데이터 가져오기)

<데이터 적제하기,예측하기, 평가하기>

//아래의 코드는 주피터 노트북에서 실행되었다.

//load_iris가 반환한 iris객체는 파이썬 딕셔너리와 비슷한 Bunch 클래스 객체. 키와 값으로 구성되어 있다. 
//iris_dataset.keys() : iris_dataset에 있는 키들을 가져오는 함수 
//iris_dataset['키이름']: 키에 해당하는 데이터를 출력 
//DESCR키에는 데이터셋에 대한 간략한 설명이 들어있음. 
//target_names: 예측하려는 붓꽃 품종의 이름을 문자열 배열로 가지고있음.     
//feature_names: 각 특성을 설명하는 문자열 리스트 


//실제 데이터가 들어있는곳은 data, target키. data는 특성값을 가지는 Numpy배열. target배열도 샘플 품종을 담은 numpy배열. 0-2의 정수로 기록되어있음. 
//데이터 배열의 행은 개개의 꽃이 되며 열은 각 꽃에서 구한 네개의 측정치. 
//각 아이템은 샘플이라고 하고 속성은 특성이라고 부른다. 

이번 예시에서는 KNN알고리즘을 사용(최근접 이웃)했다. 
모델을 사용하려면 클래스로부터 객체를 만들어야 한다. 그 객체의 메소드의 매게변수에 data, taeget을 대입하여 학습시키거나, 예측,평가한다.

 
학습시키는 메소드: fit 
새로운 X값으로 레이블을 예측하는 메소드: predict 
모델의 정확성을 평가하는 메소드: score 


//모델의 정확성을 평가하는 메소드에는 X,y 테스트값을 파라미터로 집어넣으면 X값을 예측하여 이를 y값이랑 비교 한 후, 결과를 반환한다.  

반응형