Scikit-learn
가장 많이 쓰이는 파이썬 머신러닝 라이브러리
특징
- 쉽고 파이썬스러운 API 제공
- 다양한 알고리즘과 편리한 프레임워크 API
- 오랜시간에 걸쳐 여러 사용자들에게 검증
- 다향한 환경에서 사용가능하다.
※ Anaconda를 설치하면 기본으로 설치되어 있다. 사이킷 런의 버전을 확인하는 방법은
import sklearn
print(sklearn.__verison__)
이다.
데이터 다루기
처음 머신러닝을 배울 때에는 데이터를 어디서 가져와야 할지 조차 모를수도 있다. 또한, 데이터를 외부 사이트에서 가져오더라도 정제되지 않은 것들이 많아 입문자가 바로 머신러닝 실습을 하기에는 어려움이 있다.
이런 이유에서 scikit-learn 패키지는 몇 가지의 데이터셋을 내장하고 있다.
여기에서는 붓꽃(iris) 데이터에서 붓꽃의 품종을 "분류"하는 실습을 해볼 것이다.
주어지는 붓꽃의 데이터로는 꽃잎의 길이 / 너비와 꽃받침 길이 / 너비 데이터를 준다.
이것을 통상적으로 Feature(data)라고 부른다.
붓꽃의 품종(우리가 예측해야 하는 것들)들은 통상적으로 Label(target)이라고 부른다.
붓꽃 데이터를 가져오는 코드는
import pandas as pd
from sklearn.datasets import load_iris
# sklearn 패키지에서 붓꽃(iris) 데이터를 가져온다.
iris = load_iris()
# 붓꽃의 특성을 가져온다.
iris_data = iris.data
# 붓꽃의 품종을 가져온다.
iris_label = iris.target
iris_df = pd.DataFrame(data = iris_data, columns= iris.feature_names)
# DataFrame을 생성한 이후에 target 값들을 'label'이라는 새로운 열을 만들어 넣는다.
iris_df['label'] = iris_target
이다.
추가적으로
from sklearn.tree import ******
는 tree 기반 머신러닝 알고리즘을 구현한 클래스의 모음이다.
import model_selection import *********
는 학습 / 검증 / 예측 데이터 분류하는 함수와(test_train_split()) 최적의 하이퍼 파라미터를 찾는 함수 등이 있다.
여기에서는 간단하게 이런 것이 있다라는 정도만 알아두자. (이후에 글에서 상세하게 다룰 예정이다.)
내장된 데이터 셋
사이킷 런에는 패키지 다운로드 당시 함께 다운받아지는 데이터셋과
인터넷에 저장되어 있고, 코드를 통해서 데이터를 불러오는 데이터셋이 있다.
물론, 전자는 데이터 크기가 작지만 인터넷이 연결되어 있지 않아도 사용할 수 있다는 특징을 가지고 있고,
후자는 최초 사용시 인터넷이 연결되어 있어야 하지만, 상대적으로 큰 데이터를 가지고 있다는 특징이 있다.
# 작은 데이터를 가지고 있고, 사이킷런을 다운 받을 당시 함께 다운받아지는 데이터셋
from sklearn.datasets import load_******
# 큰 데이터를 가지고 있고, 인터넷에 저장되어 있는 데이터 셋
from sklaern.datasets import fetch_******
datasets.make_classifications() -> 분류를 위한 데이터 셋
datasets.make_blobs() -> 클러스트링을 위한 데이터 셋
- data : 피처의 데이터 셋 (ndarray 형태)
- target : 분류시 레이블 값, 회귀시 숫자 결괏값 데이터 셋(ndarray 형태)
- target_names : 개별 레이블의 이름 (ndarray or list)
- feature_names : 피처들의 이름 (ndarray or list)
- DESCR : 데이터 셋에 대한 설명과 각 피처에 대한 설명 (string)
Estimator
지도학습
머신러닝은 크게 분류 알고리즘(Classifier)과 회귀 알고리즘(Regressor)가 있다. 이 둘을 Estimator라고 통칭한다.
종종 파라미터로 estimator가 있는데, 인자로 머신러닝 알고리즘을 넣어주는 것이라고 생각하면 된다.
모든 Estimator 클래스 내부의 알고리즘은 fit() 과 predict() 함수를 제공한다.
# 해당 학습 데이터로 학습
estim.fit(X_train, y_train)
# 해당 테스트 데이터로 예측
estim.predict(X_test)
# 특히 테스트 데이터를 예측하는 경우에는 별도의 변수에 저장하여 성능 평가를 한다.
pred = estim.predict(X_test)
print(accuracy_score(y_test, pred))
비지도 학습
차원 축소, 클러스터링, 피처 추출 등을 구현한 클래스이다.
지도학습에서와는 조금 다르게
fit () 함수는 학습을 의미하지 않는다.
입력 데이터의 형태에 맞춰 데이터를 변환하기 위한 사전 구조를 맞추는 작업이라고 볼수 있다.
transform() : 실제 작업을 수행하는 함수
fit_transform() : 위의 두 과정을 한번에 수행하는 함수 (이 함수에 대해서는 이후에 더욱 상세하게 다룰 예정이다.)
'기계학습 > Machine Learning' 카테고리의 다른 글
[파이썬 머신러닝 완벽가이드] : 사이킷 런 하이퍼 파라미터 & GridSearchCV - 3 (0) | 2020.08.04 |
---|---|
[파이썬 머신러닝 완벽가이드] : 사이킷 런 교차 검증(K-Fold) - 2 (0) | 2020.08.03 |
Machine Learning 의 개념 (0) | 2020.07.16 |
[Hands-on Machine Learning] 하이퍼 파라미터 튜닝, 테스트세트로 모델 평가 - housing data (0) | 2020.07.10 |
[Hands-on Machine Learning] 모델 선택과 평가, 교차 검증 - housing data (0) | 2020.07.10 |
최근댓글