이 절에서는 세 단계로 나누어 데이터셋을 읽고 훈련 데이터셋과 테스트 데이터셋으로 분할하겠습니다.

    1. pandas를 사용하여 UCI 서버에서 직접 데이터셋을 읽어 들입니다.

    >>> import pandas as pd
    >>> df = pd.read_csv('https://archive.ics.uci.edu/ml/'
    ...                  'machine-learning-databases'
    ...                  '/breast-cancer-wisconsin/wdbc.data',
    ...                  header=None)

    2. 그다음 30개의 특성을 넘파이 배열 X에 할당합니다. LabelEncoder 객체를 사용하여 클래스 레이블을 원본 문자열 표현('M''B')에서 정수로 변환합니다.1

    >>> from sklearn.preprocessing import LabelEncoder
    
    >>> X = df.loc[:, 2:].values
    >>> y = df.loc[:, 1].values
    >>> le = LabelEncoder()
    >>> y = le.fit_transform(y)
    >>> le.classes_
    array(['B', 'M'], dtype=object)

    클래스 레이블(진단 결과)을 배열 y에 인코딩하면 악성(malignant) 종양은 클래스 1로 표현되고 양성(benign) 종양은 클래스 0으로 각각 표현됩니다. 두 개의 더미 클래스 레이블 샘플로 LabelEncoder 객체의 transform 메서드를 호출해서 이 매핑을 다시 확인해 보죠.

    >>> le.transform(['M', 'B'])
    array([1, 0])

    3. 다음 절에서 첫 번째 모델 파이프라인을 구성하기 전에 데이터셋을 훈련 데이터셋(전체 데이터의 80%)과 별도의 테스트 데이터셋(전체 데이터의 20%)으로 나눕니다.

    >>> from sklearn.model_selection import train_test_split
    
    >>> X_train, X_test, y_train, y_test = \
    >>>     train_test_split(X, y,
    ...                      test_size=0.20,
    ...                      stratify=y,
    ...                      random_state=1)

     

     


      1 역주 LabelEncoder는 레이블을 알파벳 순서대로 정렬하기 때문에 'B'가 0, 'M'이 1로 매핑됩니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.