1. Estimator 이해 및 fit(), predict() 메서드

Note

  • 사이킷런은 ML 모델 학습을 위해서 fit() , 예측을 위해 predict() 메서드를 제공
  • 지도학습의 주요 유형인 분류(Classification)와 회귀(Regression)를 위한 다양한 알고리즘을 지원
  • 분류 알고리즘을 구현한 클래스를는 Classifier로, 회귀 알고리즘을 구현한 클래스는 Regressor 로 지칭
  • 이러한 ClassifierRegressor 를 포함한 모든 모델 클래스는 Estimator 클래스로 통칭됨
  • 모든 Estimatorfit()을 통해 학습하고, predict()를 통해 예측을 수행
  • cross_val_score()와 같은 evaluation 함수, GridSearchCV와 같은 하이퍼 파라미터 튜닝을 지원하는 클래스의 경우 이 Estimator를 인자로 받음
  • 인자로 받은 Estimator에 대해서 cross_val_score(), GridSearchCV.fit() 함수 내에서 이 Estimator의 fit()predict()를 호출해서 평가를 하거나 하이퍼 파라미터 튜닝을 수행하는 것

2. 사이킷런의 주요 모듈

Check

일반적으로 머신러닝 모델을 구축하는 주요 프로세스는 feature의 가공, 변경, 추출을 수행하는 feature processing, ML 알고리즘 학습/예측 수행, 그리고 모델 평가의 단계를 반복적으로 수행하는 것


3. 내장된 예제 데이터 세트

Note

사이킷런에는 별도의 외부 웹사이트에서 데이터 세트를 내려받을 필요 없이 예제로 활용할 수 있는 간단하면서도 좋은 데이터 세트가 내장돼 있음

  • 사이킷런에 내장 되어 있는 데이터 세트는 분류나 회귀를 연습하기 위한 예제 용도의 데이터 세트와 분류나 클러스터링을 위해 표본 데이터로 생성될 수 있는 데이터 세트로 나뉘어 짐

a. 분류/회귀 연습용 예제 데이터

API 명설명
datasets.load_boston()회귀 용도이며, 미국 보스턴의 집 feature들과 가격에 대한 데이터 세트
datasets.load_breast_cancer()분류 용도이며, 위스콘신 유방암 feature들과 악성/음성 label 데이터 세트
datasets.load_diabetes()회귀 용도이며, 당뇨 데이터 세트
datasets.load_digits()분류 용도이며, 0에서 9까지 숫자의 이미지 픽셀 데이터 세트
datasets.load_iris()분류 용도이며, 붓꽃에 대한 feature를 가진 데이터 세트
  • fetch 계열의 명령은 데이터의 크기가 커서 패키지에 처음부터 저장돼 있지 않고 인터넷에서 내려받아 홈 디렉터리 아래의 scikit_learn_data라는 서브 디렉터리에 저장한 후 추후 불러들이는 데이터 (최초 사용 시에 인터넷에 연결돼 있지 않으면 사용 불가)
    • fetch_covtype() : 회귀 분석용 토지 조사 자료
    • fetch_20newsgroups() : 뉴스 그룹 텍스트 자료
    • fetch_olivetti_faces() : 얼굴 이미지 자료
    • fetch_lfw_people() : 얼굴 이미지 자료
    • fetch_lfw_pairs() : 얼굴 이미지 자료
    • fetch_rcv1() : 로이터 뉴스 말뭉치
    • fetch_mldata() : ML 웹사이트에서 다운로드

b. 분류/클러스터링을위한 표본 데이터 생성기

API 명설명
datasets.make_classifications()분류를 위한 데이터 세트를 만듦. 특히 높은 상관도, 불필요한 속성 등의 노이즈 효과를 위한 데이터를 무작위로 생성
datasets.make_blobs()클러스터링을 위한 데이터 세트를 무작위로 생성. 군집 지정 개수에 따라 여러 가지 클러스터링을 위한 데이터 세트를 쉽게 만들어 줌

c. 분류나 회귀를 위한 연습용 예제 데이터의 구성

  • 사이킷런에 내장된 이 데이터 세트는 일반적으로 딕셔너리 형태로 되어 있음
    • key는 보통 data, target, target_name, feature_names, DESCR로 구성돼 있음
    • data(ndarray) : feature의 데이터 세트
    • target(ndarray) : 분류 시 label 값, 회귀일 때는 숫자 결괏값 데이터 세트
    • target_names(ndarray or list) : 개별 label의 이름
    • feature_names(ndarray or list) : feature의 이름
    • DESCR(string) : 데이터 세트에 대한 설명과 각 feature의 설명

붓꽃 데이터 세트의 구성

from sklearn.datasets import load_iris
 
iris_data = load_iris()
 
print(type(iris_data))
  • load_iris()의 API 반환 결과는 sklearn.utils.Bunch클래스로 파이썬 딕셔너리 자료형과 유사
keys = iris_data.keys()
print('붓꽃 데이터 세트의 키들:', keys)
 
>>> 붓꽃 데이터 세트의 키들: dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module'])
  • 다음 그림은 load_iris()가 반환하는 붓꽃 데이터 세트의 각 키가 의미하는 값

  • feature_names, target_name, data, target의 values 확인

print('\n feature_names 의 type:',type(iris_data.feature_names))
print(' feature_names 의 shape:',len(iris_data.feature_names))
print(iris_data.feature_names)
 
print('\n target_names 의 type:',type(iris_data.target_names))
print(' feature_names 의 shape:',len(iris_data.target_names))
print(iris_data.target_names)
 
print('\n data 의 type:',type(iris_data.data))
print(' data 의 shape:',iris_data.data.shape)
print(iris_data['data'])
 
print('\n target 의 type:',type(iris_data.target))
print(' target 의 shape:',iris_data.target.shape)
print(iris_data.target)