본문 바로가기
머신러닝/개념익히기

머신러닝 scikit-learn, 머신러닝 프로세스 간단히 알고가기

by ADELA_J 2023. 7. 21.

<사이킷런, scikit-learn>

- 파이썬 머신러닝 라이브러리 중 가장 많이 사용되는 라이브러리

- 가장 파이썬스러운 API를 제공,(다른 ML 패키지도 사이킷런 스타일의 API를 지향)

- 머신러닝(이하 ML)을 위한 다양한 알고리즘, 편리한 프레임워크 API 제공

- 많은 환경에서 사용되며 검증된 성숙한 라이브러리

 

* 참고로 짚고 넘어가는 pip 원하는 버전 설치/버전 확인 하는 방법

더보기
#원하는 버전 설치 (뒤에 == 버전 적어준다)
pip install scikit-learn ==1.0.2

#버전 확인
import sklearn
print(sklearn.__version__)

 

<사이킷런, scikit-learn을 통해 첫 번째로 만들어볼 머신러닝 모델, 붓꽃 품종 예측하기>

- 붓꽃 데이터 세트로 붓꽃의 품종을 분류(Classification)

 ▷ 꽃잎의 길이, 너비, 꽃받침의 길이 너비 Featrue를 기반으로 품종을 예측

▽ 수업시간에 했던 이걸 좀 더 자세히 공부해보

https://dev-adela.tistory.com/163

 

출처 :https://velog.io/@taeho8822/머신러닝-스터디-Scikit-Learn-맛보기

- 분류(Classification)은 대표적인 지도학습(Supervised Learning)중 하나. 

  ▷ 학습을 위한 다양한 Featrue와 Label(레이블, 분류 결정값) 데이터로 모델을 학습.

    ▷ 별도의 테스트 데이터 세트에서 미지의 레이블을 예측.

     ▶ 정답이 있는 데이터를 먼저 학습하고 미지의 정답을 예측하는 방식. (데이터 세트 / 테스트 세트로 지칭)

 

**잠깐 짚고넘어가는 사이킷런 패키지내 모듈 설명**

- sklearn.datasets

  ▷ 사이킷런에서 자체적으로 제공하는 데이터 세트 생성하는 모듈 모임

- sklearn.tree

  ▷ 트리 기반 ML 알고리즘 구현한 클래스 모임

- sklearn.model_selection

  ▷ 학습데이터/검증데이터/예측 데이터로 분리하거나 최적의 하이퍼파라미터로 평가하기 위한 모듈의 모임

 

그럼 시작해보기🙆‍♀️

▶ 1행 load_iris는 데이터 iris (붓꽃 데이터 세트) 불러오는거,

   2행 DecisionTreeClassifier는 ML알고리즘으로 의사결정트리(Decision Tree) 불러온거

   3행 train_test_split는 학습데이터랑 테스트 데이터 나누는거

 

▶ feature, 피처에는 sepal length, width, petal length, width가 있고

▶ label,레이블(결정값)은 0,1,2 3개로 되어 있으며

▶ target_names를 통해 본 레이블이름은 0이 setosa, 1이 versicolor, 2가 virgincia 품종으로 되어 있다.

 

위 3행에서 sklearn.model_selection을 불러온 train_test_split을 통해 학습용/테스트용 데이터를 분리해 줘야한다.

▶ 첫 번째 파라미터 iris_data는 피처 데이터 세트. 

▶ 두 번째 파라미터 iris_label은 레이블, 결정값 데이터 세트

▶ 파라미터 값 test_size를 통해 비율을 설정할 수 있다. 0.2 는 20%가 테스트, 80%가 학습데이터로 분할한다.

▷random_state는  난수 발생값. 지정하지 않으면 수행할때 마다 다른 학습/데이터 용 데이터를 만들 게 될것이다.

    - random에서 seed랑 같은 의미.

학습/테스트 데이터를 나눴으니 이젠 머신러닝 분류 알고리즘을 정하고 학습과 예측을 해야함.

- 여기서는 의사 결정 트리, DecisionTreeClassifier로 진행.

▶ DecisionTreeClassifier를 객체로 생성해 dt_clf 변수로 선언,

   ▷ random_state 파라미터 역시 동일한 학습/예측 결과를 출력하기 위해 적어줌.

 

 

그리고 생성된 DecisionTreeClassifier 객체의 fit() 메서드에 학습용 피처 데이터 속성과

결정값, 레이블 데이터 세트를 입력해 호출하면 학습하면

의사 결정 트리 기반의 DecisionTreeClassifer 객체인 dt_clf는 학습 데이터를 기반으로 학습이 완료된다.

그래서 학습된 dt_clf를 이용해 예측을 한다.

▶ 예측은 반드시 학습한거 말고 다른 데이터로 한다. 일반적으로 나눠놓은 테스트 데이터로 진행

 

▶ predict() 메서드에 테스트용 피처 데이터를 주면 X_train,y_train으로 학습된

DecisionTreeClassifier 객체가 X_test, 테스트 데이터 세트에 대한 예측값을 준다.

 

▶ 예측 결과를 기반으로 의사 결정 트리 기반의 DecisionTreeClassifier의 예측 성능 평가해본다.

 여러가지가 있는데 여기서는 정확도를 측정,

 정확도는 실제 레이블 값과 예측 레이블 값이 얼마나 맞는지를 평가하는 지표이다. 

 ▶ 사이킷런 accuracy_score( ) : 정확도 측정을 위한 함수.

     실제 레이블 데이터 세트, 예측 레이블 데이터 세트 파라미터를 준다.

 

 

<ML 분류, Classification 프로세스 정리!>

1. 데이터 세트 분리 : 학습 데이터 / 테스트 데이터로 분리

2. 모델 학습 : 학습 데이터를 기반으로 ML 알고리즘 적용해 모델을 학습

3. 예측 수행 : 학습된 ML 모델을 이용해 테스트 데이터의 분류(붓꽃 종류)를 예측

4. 평가 : 예측값과 실제 결과값을 비교해 ML 모델 성능을 평가