머신러닝_데이터 전처리

degull·2023년 9월 5일

Data Preprocessing Tools

Importing the libraries

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

Importing the dataset

dataset = pd.read_csv('Data.csv)
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, -1].values
  • iloc[:, :-1]: 데이터셋의 모든 열 중에서 마지막 열을 제외한 모든 열을 선택해 X에 저장. 일반적으로 입력 변수(특성)를 포함하는 열을 선택

  • iloc[:, -1]: 데이터셋에서 마지막 열만을 선택하여 y에 저장. 일반적으로 마지막 열은 목표 변수(타겟)를 나타냄

Taking care of missing data

# 누락된 값이 평균값으로 대체됨
# SimpleImputer 클래스를 사용하여 결측값(missing values)을 처리
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values = np.nan, strategy = 'mean')
imputer.fit(X[:, 1:3]
X[:, 1:3] = imputer.transform(X[:, 1:3])

imputer = SimpleImputer(missing_values=np.nan, strategy="mean")
missing_values 매개변수는 결측값을 나타내는 값으로, 일반적으로 nan 사용
strategy 매개변수는 결측값을 대체하는 방법을 지정하며, "mean"을 사용하여 평균값으로 대체하도록 설정

imputer.fit(X[:, 1:3])
fit 메서드를 사용해 SimpleImputer 객체를 특성 행렬 X의 특정 열(1번부터 2번 열까지)에 맞춰 해당 열에서 결측값에 대한 평균을 계산.

X[:, 1:3] = imputer.transform(X[:, 1:3])
transform메서드를 사용해 결측값을 대체. 특성 행렬X`의 1번부터 2번 열까지 결측값을 해당 열의 평균값으로 대체하며 누락된 데이터를 평균값으로 채워넣음

Encoding categorical data

Encoding the Independent Variable

범주형 데이터 인코딩 (문자열 -> 숫자열)
원핫 인코딩 방식 사용

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [0])], remainder='passthrough')
X = np.array(ct.fit_transform(X))

ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [0])], remainder='passthrough')
OneHotEncoder()를 사용하여 첫 번째 열([0])을 변환
remainder` 매개변수는 'passthrough'로 설정해 변환하지 않고 그대로 출력

X = np.array(ct.fit_transform(X))
fit_transform 메서드를 사용하여 특성 행렬 X를 변환

Encoding the Dependent Variable

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
y = le.fit_transform(y)

Splitting the dataset into the Training set and Test set

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 = 1)

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 = 1)
X : 특성행렬
y : 타겟 벡터
test_size : 전체 데이터셋 중 테스트에 사용될 데이터의 비율로 20%를 테스트 세트로 사용
random_state : 무작위 시드를 지정

Feature Scaling

#표준화 : 항상 좋은 결과 도출
#정규화 : 대부분의 특성이 정규 분포를 따른다면 정규화가 좋음(only 특수상황)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train[:, 3:] = sc.fit_transform(X_train[:, 3:])
X_test[:, 3:] =  sc.transform(X_test[:, 3:])

X_train[:, 3:] = sc.fit_transform(X_train[:, 3:])
(훈련세트) 특성행렬 X_train의 3번열부터 마지막까지 스케일링.
fit_transform 메서드를 호출해 해당 열을 표준화하며, 훈련 데이터를 기반으로 스케일링 변환을 수행해 평균과 표준 편차를 계산하여 이를 이용해 스케일링

X_test[:, 3:] = sc.transform(X_test[:, 3:])
(테스트세트) X_test의 3번열부터 마지막까지 스케일링.
transform 메서드를 호출해 훈련 데이터에서 계산한 평균과 표준 편차를 사용하여 스케일링

profile
그래도 해야지

0개의 댓글