더북(TheBook)

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

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로 매핑됩니다.

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