<사이킷런, 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
- 분류(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 모델 성능을 평가
'머신러닝 > 개념익히기' 카테고리의 다른 글
머신러닝 scikit-learn 주요 모듈 (0) | 2023.07.30 |
---|---|
머신러닝, 지도학습과 비지도학습 간단히 (0) | 2023.07.29 |
머신러닝 하이퍼파라미터 (0) | 2023.07.20 |
머신러닝 같은 데이터로 scikit-learn 구현해보기 (0) | 2023.07.19 |
머신러닝 랜덤포레스트 / k-NN (0) | 2023.07.19 |