[파이썬 머신러닝] 3. 사이킷런 (1)

2021. 2. 3. 22:16프로그래밍-AI & 빅데이터/머신러닝

실습1) 붓꽃 품종 예측하기

 

- 지도학습: 레이블 데이터로 학습한 뒤, 별도의 테스트 데이터 세트에서 레이블 예측

- 데이터 분류: 학습데이터와 테스트데이터로 분류

- Feature : 데이터 수집 후 learning전, feature selection을 통해 feature를 뽑는다. 이를 통해 Label을 찾아낸다.

 

Step1- 사전 세팅

 

sklearn의 datasets 모듈은 데이터 세트,

tree 모듈은 트리 기반 ML 알고리즘들의 모음,

model_selection은 학습,검증,예측 데이터를 구분하는 도구들의 모음이다

각각의 모듈에서 from절로 필요한 함수 및 데이터를 import 한다.

 

예시의 경우 DecisionTreeClassifier라는 함수를 알고리즘으로, train_test_split이라는 함수를 데이터 분리용으로 사용한다. load_iris의 경우 사이킷런이 내장하고 있는 붓꽃 데이터 세트이다

 

load_iris함수는 실행으로 로딩하여 iris 객체에 담는다

이 객체에는 feature 데이터세트만 뽑아내는 data메소드,  label데이터세트만 뽑아내는 target_names메소드가 있다.

또한 target메소드는 label데이터를 numpy로 보여주며, feature 리스트는 feature_names로 뽑아낼 수 있다.

 

각 항목에 대해 print해보면 다음과 같다

 

이는 판다스를 이용해 feature이름과 feature데이터로 이루어진 dataframe객체로 변환된다

다음과 같은 결과를 얻어낼 수 있다

이때 label의 0,1,2는 target_name으로 변환하면 각 setosa, versicolor, virginica 세가지 라벨을 뜻한다.

 

 

Step2 - 데이터 세트 분리

 

Learning전, 데이터를 테스트 데이터와 학습 데이터로 분리한다.

이는 사이킷런의 train_test_split 함수와 그 args인 test_size를 지정함으로써 설정할 수 있다.

이때 random_state는 난수 적용 방법을 설정하는 것인데, const를 넣으면 일정한 데이터가 추출된다.

해당 코드는 X는 feature 데이터,  y는 label을 각각 테스트, 학습용으로 나누어 추출한다.

 

Step3 - 학습 및 예측 수행

 

Step1에서 불러왔던 의사결정트리를 ML알고리즘으로 사용하고, fit메소드를 통해 학습용 feature와 label데이터를 집어 넣어 학습을 한다.

 

predict 메소드로 예측을 수행한다. 그 후 평가한다.

정확도는 93퍼센트로 예측되었다.

 

 

사이킷런 프레임워크의 모듈)

 

- 사이킷런의 Estimater 클래스의 분류: Classifier 클래스는 분류를, Regressor 클래스는 회귀를 지원

- 이러한 Estimater 클래스의 내부 알고리즘은 모두 fit( ) 과 predict( ) 메소드를 기반으로 한다

- 비지도 학습의 경우 fit( ) 과 transform( ) 메소드를 기반으로 하는데, 이 경우에 fit은 데이터 구조를 조작하는 것에 해당한다

 

지원 모듈은 크게 7가지로 나뉜다

 

1) 예제데이터 - datasets와 같은 모듈. 내장된 데이터 세트가 있다

2) 피처 처리 -  feature_selection, feature_extraction과 같은 모듈. 알고리즘에 영향주는 피처를 우선순위대로 수행하거나, 텍스트, 이미지 데이터의 벡터화 된 피처를 추출한다

3) 차원 축소 - decomposition과 같은 모듈

4) 데이터 분리, 검증, 파라미터 튜닝 - model_selection과 같은 모듈. 학습용, 테스트용 데이터를 분리하는데 주로 사용.

5) 평가 - metrics와 같은 모듈. 성능 측정 방법을 제공한다. 

6) ML 알고리즘 - ensemble(앙상블), tree(트리), cluster(군집) 등등의 알고리즘

7) 유틸리티 - pipeline과 같은 유틸리티 알고리즘

 

일반적인 머신러닝 모델은

 

feature processing(피처의 가공, 변경, 추출) -> ML알고리즘 학습 -> 예측 수행 -> 모델 평가 단계를 반복한다