- 파이토치를 이용해서 데이터셋을 분리하는 절차에 대해 알아보자.
- 분리하는 과정에서 사용되는 함수들에 대해 정리하자.
왜 파이토치인가?
- 파이토치에서 사용하는 토치는 신경망을 구성하고 훈련하는 핵심 기능을 제공하는 패키지다.
- 다차원 배열이라 불리는 텐서를 사용한다. 넘파이배열도 다차원을 지원한다.
- 하지만, 텐서는 GPU가속 지원과 텐서의 그라디언트를 자동으로 구해주는 'autograd'를 지원한다.
- 이로써, 개발자가 복잡한 연산 그래프를 정의하도록 해주고 훈련 중에 역전파에 대한 그레디언트를 자동으로 연산해준다.
데이터셋의 분리
- 데이터셋은 모 델의 학습, 검증, 평가에 따라 구분하여 사용한다.
- 학습데이터셋은 모델에 파라미터를 학습하는데 사용하고
- 검증데이터셋은 학습하는데 사용하지 않지만, 검증데이터를 좋게 만들기 위해 하이퍼파라미터를 튜닝하거나 학습데이터를 전처리한다.
- 평가데이터셋은 다양한 모델의 성능을 비교하기 위해 사용하는 용도로 구분한다.
데이터프레임의 분리
sklearn 데이터셋 불러오기
from sklearn.datasets import fetch_california_housing
califonia = fetch_california_housing()
- sklearn.datasets에서 fetch_califonia_housing을 임포트해서 califonia에 넣어준다.
df = pd.DataFrame(califonia.data, columns = califonia.feature_names)
- 임포트한 califonia.values를 pandas.DataFrame()인 df에 넣어준다.
- sklearn에서 임포트한 califonia는 data, target, feature_names, DESCR, frame 등의 데이터셋인 Bunch를 가지고 있다. 호출 하는 방법은 객체.(요청하는 bunch)를 통해 호출한다.
- .data는 ndarray타입으로, shpae = (20640, 8)이다.
- .feature_names은 길이가 8인 리스트이다.
df["Target"] = califonia.target
- .target은 numpy array 타입으로, shape = (20640,)
- 만들어진 df에 "Target" 컬럼을 추가하고, califonia.target의 어레이를 넣어준다.
df.tail()
- 데이터프레임의 하위 5개의 데이터를 드려다보면 아래와 같다.
