본문 바로가기
인공지능/데이터 전처리

[데이터 전처리] 인공지능 만들기 전 준비과정 데이터 전처리하기

by coding_su 2022. 11. 30.

📝인공지능 만들기 전 데이터 처리하기

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from imblearn.over_sampling import SMOTE
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.model_selection import train_test_split

 

1. pd 데이터 가져오기

2. 0이나 다른 데이터로 채워져 있는 값 nan으로 변환

3. 비어있는 데이터 확인(있으면 삭제하거나 채우기)

4. 예측할 컬럼을 y, 예측을 위해 필요한 데이터 X로 지정

5. 문자열 데이터가 있을경우 레이블 인코딩(또는 원핫)으로 문자열 데이터를 숫자로 바꿔준다

6. 예측할 값 데이터 갯수 파악(데이터 불균형일시 테이터 늘리거나 삭제)

7. 데이터 범위 맞춰주기(피처스케일링)

8. 학습용과 테스트용 데이터 나누기

import numpy as np
import pandas as pd

# 데이터프레임을 불러온다
df = pd.read_csv('파일명')

 # 불러온 df 정보를 확인
df.describe()

 # 0이나 다른 데이터로 채워져 있는 값을 nan값으로 변경한다
df.loc[ : , 컬럼1:컬럼2 ] = df.loc[ : , 컬럼1:컬럼2].replace(0, np.nan) # 0을 nan값으로 바꾼다

# nan값 확인
df.isna().sum()

# nan값이 있을 경우 삭제하거나 값을 채워준다
df.dropna()
df.fillna(df.mean()) # 평균값으로 채우기

# 예측할 컬럼을 y, 예측을 위해 필요한 데이터 X로 지정
X = df.loc[:, '컬럼1' : '컬럼2']
y = df['컬럼']

# 문자열 데이터가 있을경우 레이블 인코딩(또는 원핫)으로 문자열 데이터를 숫자로 바꿔준다
sorted( X['컬럼'].unique() )
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.compose import ColumnTransformer

# 레이블 인코딩
encoder = LabelEncoder()
X['컬럼'] = encoder.fit_transform(X['컬럼'])

# 원핫 인코딩
ct = ColumnTransformer( [( 'encoder', OneHotEncoder(),[0] )], remainder='passthrough' )
ct.fit_transform(X.values)

# 예측할 값 데이터 갯수 파악
df['예측할 값 컬럼'].value_counts()

# 데이터의 불균형일시 up sampling 기법으로 데이터를 늘린다
from imblearn.over_sampling import SMOTE
sm = SMOTE()
X, y = sm.fit_resample(X, y)

# 피처스케일링(=범위 맞추기)
from sklearn.preprocessing import StandardScaler, MinMaxScaler
m_scaler_x = MinMaxScaler()
X = m_scaler_x.fit_transform(X)

# 학습용과 테스트용 나누기
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.2, random_state=2)

댓글