Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

TensorFlow로 Auto MPG 데이터셋의 연비 예측을 위한 데이터 정규화 방법

TensorFlow는 Google이 제공하는 머신러닝 프레임워크입니다. 오픈소스 프레임워크로서 Python과 함께 사용되어 다양한 알고리즘 구현, 딥러닝 애플리케이션 개발 등에 활용됩니다. Windows에서는 아래 명령어로 'tensorflow' 패키지를 설치할 수 있습니다.

pip install tensorflow

텐서(Tensor)는 TensorFlow에서 사용되는 데이터 구조입니다. 플로우 다이어그램에서 엣지(edge)를 연결하는 역할을 하며, 이러한 흐름도는 '데이터 플로우 그래프(Data flow graph)'라고 불립니다. 텐서는 다차원 배열 또는 리스트라고 할 수 있습니다.

회귀(Regression) 문제의 목표는 가격, 확률, 강수 여부 등과 같은 연속형 또는 이산형 변수의 출력값을 예측하는 것입니다.

여기서 사용하는 데이터셋은 'Auto MPG' 데이터셋입니다. 이 데이터셋에는 1970년대와 1980년대 자동차의 연비 정보가 담겨 있으며, 무게, 마력, 배기량 등의 특성(feature)들이 포함되어 있습니다. 우리의 목표는 이러한 특성들을 바탕으로 특정 차량의 연비를 예측하는 것입니다.

아래 코드는 Google Colaboratory에서 실행됩니다. Google Colab은 브라우저에서 Python 코드를 실행할 수 있도록 도와주며, 별도의 설정 없이 GPU에 무료로 접근할 수 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 구축되었습니다.

코드 예시

print("레이블과 특성 분리")
train_features = train_dataset.copy()
test_features = test_dataset.copy()

train_labels = train_features.pop('MPG')
test_labels = test_features.pop('MPG')
print("훈련 데이터셋의 평균과 표준편차 : ")
train_dataset.describe().transpose()[['mean', 'std']]
print("특성마다 스케일이 다르므로 정규화가 필요함")
print("정규화 레이어 생성")
normalizer = preprocessing.Normalization()
normalizer.adapt(np.array(train_features))
print(normalizer.mean.numpy())
first = np.array(train_features[3:4])
print("각 특성이 개별적으로 정규화됨")
with np.printoptions(precision=2, suppress=True):
print('첫 번째 예시 :', first)
print()
print('정규화된 데이터 :', normalizer(first).numpy())

코드 출처 - https://www.tensorflow.org/tutorials/keras/regression

출력 결과

레이블과 특성 분리
훈련 데이터셋의 평균과 표준편차 :
특성마다 스케일이 다르므로 정규화가 필요함
정규화 레이어 생성
[ 5.467 193.847 104.135 2976.88 15.591 75.934 0.168 0.197
0.635]
각 특성이 개별적으로 정규화됨
첫 번째 예시 : [[ 4. 105. 63. 2125. 14.7 82. 0. 0. 1. ]]

정규화된 데이터 : [[−0.87 −0.87 −1.11 −1.03 −0.33 1.65 −0.45 −0.5 0.76]]

설명

  • 예측 대상 값(레이블)을 특성으로부터 분리합니다.

  • 레이블은 예측 모델이 학습해야 하는 목표값입니다.

  • 특성들은 훈련의 안정성을 높이기 위해 정규화됩니다.

  • TensorFlow의 'Normalization' 함수가 데이터 전처리를 담당합니다.

  • 첫 번째 레이어가 생성되며, 이 레이어에 평균과 분산이 저장됩니다.

  • 이 레이어가 호출되면 각 특성이 정규화된 입력 데이터를 반환합니다.