Scikit-learn 라이브러리로 Python에서 머신러닝 모델을 구현할 수 있다.
Scikit-learn은 Python 기반의 머신러닝 라이브러리이다.
다양한 알고리즘 함수, API, 내장 예제 데이터 등을 제공한다.
앞으로 데이터 전처리부터 교차 검증과 다양한 머신러닝 모델(회귀, 분류, 군집화 등) 구현 등
다방면에 scikit-learn 라이브러리를 사용할 예정이다.
https://scikit-learn.org/stable/
scikit-learn: machine learning in Python — scikit-learn 1.1.1 documentation
Model selection Comparing, validating and choosing parameters and models. Applications: Improved accuracy via parameter tuning Algorithms: grid search, cross validation, metrics, and more...
scikit-learn.org
Scikit-learn 자료구조
라이브러리에 따라 자료의 형태나 데이터 표현 방식, 명칭 등이 상이하다.
Python 언어의 기본 자료형이 list, tuple, dictionary 등이라면,
Pandas 라이브러리의 자료구조는 Series와 DataFrame이다.
Scikit-learn 라이브러리의 경우 특징행렬과 대상벡터로 데이터를 표현한다.
특징행렬(Feature Matrix)
- [n_samples, n_features] 형태의 2차원 구조 (행: sample, 열: feature)
- numpy의 배열(array), pandas의 데이터프레임 등과 같은 기본 자료구조
- 특징(feature) : 각 표본을 연속적인 수치값, 부울값, 이산값 등으로 표현하는 개별 관측치
- feature, 독립변수 모두 동일한 의미
대상벡터(Target Vector)
- 지도 학습에서 데이터의 학습을 위해 주어지는 정답 데이터
- 1차원 배열구조 사용(정답 데이터가 담긴 하나의 열)
- 연속적인 수치값, 이산클래스
- target, 레이블, 클래스, 종속변수, 반응변수 모두 동일한 의미
ex) iris 데이터
- feature : sepal(꽃받침) length/width, petal(꽃잎) length/width
- label/target : iris(품종 → Setosa, Versicolor, Virginica)
Training 데이터와 Test 데이터
주어진 데이터로 기계를 학습시키고 새로운 데이터로 알고리즘의 성능을 검증하는 머신러닝에는
훈련/학습 데이터와 테스트 데이터가 필요하다.
- 학습을 위한 데이터셋 : Train Set
- 성능 검증을 위한 데이터셋 : Test Set
머신러닝에 사용되는 데이터는 반드시 Train Set과 Test Set으로 분할되어야 한다.
학습 데이터로 성능 평가까지 진행할 경우 정확도가 과도하게 높게 측정될 수 있다.
Scikit-learn 라이브러리의 train_test_split 함수를 주로 사용하며,
기본적으로 훈련 데이터 75%, 테스트 데이터 25%로 구성한다.
머신러닝 실습: 붓꽃 품종 예측 모델
머신러닝 모델 구현 실습은 Scikit-learn 라이브러리에 포함된 붓꽃(iris) 데이터로 진행한다.
iris 데이터는 붓꽃의 품종을 분류해놓은 것으로,
꽃잎, 꽃받침의 길이와 너비 feature를 기반으로 품종을 예측하기 위한 데이터이다.
머신러닝 예측 모델 구현을 위해서는 모든 데이터를 숫자로 변환해야 하기 때문에,
레이블은 Setosa, Versicolor, Virginica의 세 가지 품종이 각각 0, 1, 2로 변환되어 있다.
데이터를 조회하고 분석하는 것은 문자형 데이터로도 가능하지만,
머신러닝은 모든 데이터가 숫자형 데이터일 때에만 가능하다.
* 붓꽃 데이터 분류 예측 프로세스
(1) 데이터 분리
가장 먼저 데이터셋을 학습 데이터와 테스트 데이터로 분리한다.
150개의 붓꽃 데이터 중 120개는 학습 데이터로, 나머지 30개는 테스트 데이터로 사용한다.
(2) 모델 학습
머신러닝에 쓰일 알고리즘을 적용(import 및 객체 생성), 학습 데이터로 모델 객체를 학습시킨다.
iris 실습에는 sklearn.tree 패키지의 decision tree 모델을 사용한다.
(3) 품종 예측
학습된 모델로 테스트 데이터의 label 값을 예측한다.
(4) 예측 정확도 평가
sklearn.metrics의 accuracy_score를 사용하여 예측에 사용된 모델의 성능을 평가한다.
다시 말하지만, 머신러닝 모델의 성능을 향상시키기 위해서는 데이터를 가공할 줄 알아야 한다.
머신러닝 알고리즘을 돌리는 것은 너무나도 간단하다.
iris 실습 역시 데이터가 이미 정제된 상태이므로 비교적 간단하게 실습을 진행할 수 있다.
아래 링크에서 붓꽃 품종 예측 모델 실습 코드를 확인할 수 있다.
https://github.com/tldnjs1231/data-analytics/blob/main/data-analytics-08-scikit-learn_iris.ipynb
GitHub - tldnjs1231/data-analytics
Contribute to tldnjs1231/data-analytics development by creating an account on GitHub.
github.com
'2022 데이터 사이언스 > 빅데이터 분석과 모델링' 카테고리의 다른 글
10. 데이터 전처리: 인코딩, 스케일링 (0) | 2022.06.20 |
---|---|
09. 교차 검증: cross_val_score, GridSearchCV (0) | 2022.06.20 |
07. 머신러닝의 이해 (0) | 2022.06.20 |
06. 데이터 시각화: matplotlib, seaborn (0) | 2022.06.20 |
05. Pandas(4): 타이타닉 예제 (0) | 2022.06.20 |