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

TensorFlow로 Auto MPG 데이터셋 정리하기: 연료 효율 예측을 위한 데이터 전처리 완벽 가이드

TensorFlow는 Google에서 제공하는 머신러닝 오픈소스 프레임워크입니다. Python과 함께 사용하여 알고리즘 구현, 딥러닝 애플리케이션 개발 등 다양한 작업을 수행할 수 있습니다.

'tensorflow' 패키지는 Windows 환경에서 다음 명령어 한 줄로 간단히 설치할 수 있습니다.

pip install tensorflow

텐서(Tensor)는 TensorFlow에서 사용되는 기본 데이터 구조로, 데이터 흐름 그래프(Data Flow Graph)에서 노드 사이의 간(edge)을 연결하는 역할을 합니다. 텐서는 본질적으로 다차원 배열 또는 리스트라고 할 수 있습니다.

회귀(Regression) 문제의 목표는 가격, 확률, 비가 올지 여부처럼 연속형 또는 이산형 변수의 출력값을 예측하는 것입니다.

이 글에서 사용할 데이터셋은 'Auto MPG'로, 1970년대와 1980년대 자동차들의 연료 효율 정보를 담고 있습니다. 무게(weight), 마력(horsepower), 배기량(displacement) 등 다양한 속성이 포함되어 있으며, 이 데이터를 학습시켜 특정 차량의 연비를 예측하는 것이 최종 목표입니다.

아래 코드는 Google Colaboratory에서 실행했습니다. Google Colab은 브라우저만으로 Python 코드를 실행할 수 있게 해주며, 별도의 설정이 필요 없고 GPU(그래픽 처리 장치)도 무료로 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.

그럼 TensorFlow를 사용해 Auto MPG 데이터셋으로 연료 효율을 예측하기 위해 데이터를 정리하는 과정을 살펴보겠습니다.

예제 코드

print("Data cleaning has begun")
dataset.isna().sum()
dataset = dataset.dropna()
dataset['Origin'] = dataset['Origin'].map({1: 'USA', 2: 'Europe', 3: 'Japan'})

print("Data cleaning complete!")
dataset = pd.get_dummies(dataset, prefix='', prefix_sep='')

print("A sample of dataset after data cleaning :")
dataset.head(4)

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

실행 결과

Data cleaning has begun
Data cleaning complete!
A sample of dataset after data cleaning -

MPGCylindersDisplacementhorsepowerweightAccelerationModel YearEuropeJapanUSA
018.08307.0130.03504.012.070001
115.08350.0165.03693.011.570001
218.08318.0150.03436.011.070001
316.08304.0150.03433.012.070001

코드 상세 설명

1. 결측치(NaN) 확인 및 제거

데이터 정리는 데이터셋에 포함된 'nan'(결측값)을 처리하는 것부터 시작합니다. dataset.isna().sum()을 호출하면 각 열에 결측치가 몇 개 있는지 확인할 수 있고, dataset.dropna()를 통해 결측치가 포함된 행을 삭제합니다. 결측치가 그대로 남아 있으면 모델 학습 시 오류가 발생하거나 예측 성능이 저하될 수 있으므로 반드시 제거해야 합니다.

2. Origin 열의 값 변환

'map' 함수는 숫자로 된 라벨을 의미 있는 이름으로 매핑하는 데 사용됩니다. 여기서는 Origin 열의 1, 2, 3이라는 숫자 코드를 각각 'USA', 'Europe', 'Japan'이라는 국가 이름으로 바꿔 데이터의 가독성을 높입니다.

3. 원-핫 인코딩(One-Hot Encoding)

pd.get_dummies()를 사용하면 범주형 열인 Origin이 USA, Europe, Japan이라는 세 개의 이진(0 또는 1) 열로 변환됩니다. 이렇게 하면 머신러닝 모델이 문자열 형태의 국가 정보를 숫자로 인식하고 학습할 수 있게 됩니다.

4. 정리된 데이터 확인

마지막으로 dataset.head(4)를 호출해 데이터 정리가 완료된 데이터셋의 첫 4개 행을 콘솔에 출력합니다. 실행 결과를 보면 기존의 Origin 열 대신 Europe, Japan, USA 열이 새롭게 추가된 것을 확인할 수 있으며, 이 데이터셋을 활용해 연료 효율(MPG) 예측 모델을 학습시킬 준비가 끝납니다.