Practice makes perfect

[MachineLearning] 사이킷런(scikit-learn), Part1(붓꽃 품종 예측) 본문

Anaconda/MachineLearning

[MachineLearning] 사이킷런(scikit-learn), Part1(붓꽃 품종 예측)

kerpect 2020. 8. 29. 23:48

 사이킷런(scikit-learn) 이란?

 : 파이썬 머시러닝 라이브러리 중 가장 많이 사용되는 라이브러리입니다. 파이썬 기반의 머신러닝은 곧 사이킷런으로 개발하는 것을 의미할 정도로 오랜 기간 파이썬 세계에서 인정 받았으며 사용되고 있습니다. 

 

사이킷런의 특징 

1. 파이썬 기반의 다른 머스러닝 패키지도 사이킷런 스타일의 API를 지향할 정도로 쉽게 가장 파이썬 스러운 API를 제공

2. 머신러닝을 위한 매우 다양한 알고리즘과 개발을 위한 편리한 프레임워크와 API를 제공

3. 오랜 기간 실적 환경에서 검증됐으며, 매우 맣은 환경에서 사용되는 성숙한 라이브러리 

 

사이킬런 설치 

 

1.  Anaconda prompt 

conda install scikit-learn 

 

 

2. Jupyter Notebook

pip install scikit-learn 

 

- Anaconda를 설치하면 기본 사이킷런까지 설치가 완료되기 때문에 별도의 설치가 필요 없습니다. 

 

 

붓꽃 품종 예측하기 

 

- 붓꽃 데이터 세트로 분꽃의 품종을 분류하는 것입니다. 붓꽃 데이터 세트는 꽃이의 길이와 너비, 꽃받침의 길이와 너비 피처를 기반으로 꽃의 품종을 예측하기 위한 것 입니다. 

 

분류 - 대표적인 지도학습 방법으로 명확한 정답이 주어진 데이터를 먼저 학습한 뒤 미지의 정답을 예측하는 방식입니다.

 

1. 라이브러리 

- sklearn.datasets : 사이킷런에서 자체적으로 제공하는 데이터 세트를 생성하는 모듈의 모임입니다. 

- DecisionTreeClassifier : 의사 결정 트리 알고리즘입니다. 

- train_test_split : 데이터 세트를 학습 데이터와 테스트 데이터로 분리하는데 사용하는 함수입니다. 

 

 

2. 데이터 불러오기 

 

3. DataFrame 으로 변환 

 

4. 학습용 데이터와 테스트용 데이터 분리 

test_size = 0.2 : 전체 데이이터 중 테스트 데이터가 20%, 학습 데이터가 80%로 데이터를 분활합니다. 

random_state : 호출할 떄마다 같은 학습/테스트 용 데이터 세트를 생성하기 위해 주어지는 난수 발생 값입니다. 

- 어떤 값을 지정해도 상관 없습니다. 

 

 

5. DecisionTreeClassifier 객체 생성

DecisionTreeClassifier 객체는 fit() 메서드에 학습용 피처 데이터 속성과 결정 값 데이터 세트를 입력해 호출하면 학습을 수행합니다. 

 

 

6. 학습 수행

 

7. 학습이 완료된  DecisionTreeClassifier 객체에서 테스트 데이터 세트로 예측 수행

예측은 반드시 학습 데이터가 아닌 다른 데이터를 이용해야 하며, 일반적으로 테스트 데이터 세트를 이용합니다. 

- predict( ) 메서드에 테스트용 피처 데이터 세트를 입력해 호출하면 학습된 모델 기반에서 테스트 데이터 세트에 대한 예측갑이 반환됩니다. 

 

 

8. 성능 평가(정확도)

accuracy_score( ) 함수를 통해서 정확도를 출력합니다. 

 

 

1. 데이터 세트 분리 : 데이터를 학습데이터와 데스트 데이터로 분리
2. 모델 학습 : 학습데이터를 기반으로 ML 알고리즘을 적용해 모델 학습
3. 예측 수행 : 학습된 ML 모델을 이용해 테스트 데이터 분류 예측
4. 평가 : 이렇게 예측된 결과값과 테스트 데이터의 실제 결과값을 비교 모델 성능 평가.