코딩하는 오리

[ML] 머신 러닝, 더 빠르고 정확하게 - 1. 데이터 전처리 본문

AI/ML

[ML] 머신 러닝, 더 빠르고 정확하게 - 1. 데이터 전처리

jooeun 2024. 7. 31. 01:44

01. 머신 러닝 더 빠르고 정확하게 토픽

 

머신 러닝 알고리즘의 속도와 정확도를 높이는 방법(아무렇게 쓰면 성능 떨어짐)

이 이론들을 scikit-larn과 pandas 라이브러리에서 적용하는 과정 ~

 

 

03. Feature Scaling : Normalization

입려 변수/속성을 조정하는 것

 

정의 : 머신 러닝 모델에 사용할 입력 변수들의 크기를 조정해서 일정 범위 내에 떨어지도록 바꾸는 것

 

연봉과 나이 차이가 크니까 1 이내로 들어오도록 조정

 

Feature Scaling

- 경사 하강법을 좀 더 빨리 할 수 있게 도와준다 !

 

min-max normalization

normalizatoin = 숫자의 크기를 0과 1 사이로 만든다

 

최솟값, 최댓값을 이용해서 데이터의 크기를 0과 1 사이 값으로 만든다

 

 

 

05. scikit-learn으로 Normalization 해보기

 

from sklearn import preprocessing

 

NBA_FILE_PATH = '../datasets/NBA_player_of_the_week.csv'

nba_player_of_the_week_df = pd.read_csv( NBA_FILE_PATH )

 

.head()

.describe() : 통계

 

height_weight_age_df = nba_player_of_the_week_df[['Height CM', 'Weight KG'. 'Age']]

 

scaler = preprocessing.MinMaxScaler()

normalized_data = scaler.fit_transform(height_weight_age_df)

normalized_df = pd.DataFrame(normalized_data, columns=['Height', 'Weight', 'Age'])

 

normalized_df.describe()

 

 

06. Feature Scaling과 경사 하강법

Feature Scaling이 경사 하강법을 줄여주는 이유 ~

 

그래프를 2차원으로 그리면 좋은 점은, 특정 지점에서 가장 가파른 방향은 등고선과 수직이 되는 방향이다 !

선형 회귀를 예시로 들었지만

경사 하강법을 사용하는 모든 알고리즘의 속도를 빠르게 해준다.(다항 회귀, 로지스틱 회귀)

 

 

08. Feature Scaling : 표준화(Standardization) 

표준화 하면 항상 새로운 데이터 평균은 0, 표준편차는 1이 된다

통계학에서는 z-score라고도 한다.

 

 

scaler = preprocessing.StandardScaler()

 

 

11. One-hot Encoding

머신 러닝에서 사용하는 데이터

-수치형(numerical) 데이터 : 나이, 몸무게, 키

-범주형(categorical) 데이터 : 혈액형, 성별

 

범주형 데이터는 수치형 데이터로 바꿔야한다 !

원치 않은 엉뚱한 관계가 생겨버림

 

범주형 데이터를 수치형 데이터로 바꿀 때 'One-hot Encoding' 사용한다.

 

 

14. pandas로 One-hot Encoding 해보기

 

import pandas as pd

TITANIC_FILE_PATH = '../datasets/titanic.csv'

titanic_df = pd.read_csv(TITANIC_FILE_PATH)

 

titanic_sex_embarked = titanic_df[['Sex','Embarked']]

 

one_hot_encoded_df = pd.get_dummies(titanic_sex_embarked)

one_hot_encoded_df.head()

 

 

pd.get_dummies(data=titanic_df, columns=['Sex','Embarked']) -> columns 목록 값들만 one-hot encoding 된다