본문 바로가기
● 인공지능, 분석/20.08 생코_머신러닝

생활코딩_Tensorflow_Err

by 0ver-grow 2020. 8. 20.
반응형

원 핫 인코딩시 데이터의 타입으로 인해 발생하는 에러 Err

import pandas as pd

# 파일 읽어오기
파일경로 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/iris2.csv'
아이리스 = pd.read_csv(파일경로)
아이리스.head()

# 품종을 숫자로 표현했기에 범주형데이터 이므로
# 원핫인코딩 되지 않는 현상 확인
인코딩 = pd.get_dummies(아이리스)
인코딩.head()

# 하지만 원핫인코딩 코드가 먹히지 않음
# 왜? 판다스는 read_csv로 읽어들일 때 숫자는 숫자로 인식하여 범주형인 것을 모르기 때문이다.
# 그래서 범주형으로 변경하는 작업을 해야한다.
# 이를위해, 아이리스 데이터 타입을 체크해보자
print(아이리스.dtypes)
# 원핫인코딩 시키는 칼럼들은 타입이 카테고리, 오브젝트만 가능

# 품종 타입을 범주형으로 바꾼다.
아이리스['품종'] = 아이리스['품종'].astype('category')
print(아이리스.dtypes)

# one hot encoding
인코딩 = pd.get_dummies(아이리스)
인코딩.head()

 

데이터 값을 처리할 때, NA값으로 에러가 발생할 때.

NA값 처리하기

# NA값을 체크하기
아이리스.isna().sum()

아이리스.tail()

# NaN을 다른 숫자로 바꾸거나 지워야 한다.
# 쉬운방법은 엑셀로 원본데이터에서 삭제하는 것
# 프로그래밍 상으로 하는 방법은 평균값을 넣어주는 것!
mean = 아이리스['꽃잎폭'].mean()
print(mean)
아이리스['꽃잎폭'] = 아이리스['꽃잎폭'].fillna(mean)
아이리스.tail()

반응형