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알고리즘 학습 -> 예측 수행 -> 모델 평가 단계를 반복한다
'프로그래밍-AI & 빅데이터 > 머신러닝' 카테고리의 다른 글
[파이썬 머신러닝] 3. 싸이킷런(3) - 데이터 전처리 (0) | 2021.03.08 |
---|---|
[파이썬 머신러닝] 3. 싸이킷런 (2) - Model Selection (1) | 2021.03.04 |
[파이썬 머신러닝] 2. 판다스(2)- 데이터 셀렉션 및 필터링 (0) | 2021.01.25 |
[파이썬 머신러닝] 2. 판다스(1)- DataFrame의 변환,생성,수정,삭제,인덱스 (0) | 2021.01.13 |
[파이썬 머신러닝] 1. 머신러닝 이해 - 넘파이 (0) | 2021.01.12 |