범주가 적은 값을 피처로 만들어 주면 어떤 문제가 또 있을 수 있을까요?
너무 희소한 값이라면 one-hot-encoding 할 때 어떤 전처리를 할 수 있을까요?
왜 데이터를 정규분포 형태로 만들어주면 머신러닝이나 딥러닝에서 더 나은 성능을 낼까요?
너무 큰 음수값이 있을때! 음수인 값이 너무 뾰족하거나 치우쳐져 있어서 로그를 취하기 위해서는 어떻게 전처리 해야 할까요? 예를 들어 –1000 이라면?
1000 에 1001 을 더해서 로그변환을 해주었습니다. 원래 값으로 다시 복원하려면 어떻게 해야 할까요?
np.exp(x) -1001
np.expm1 을 보면 exp를 먼저 하고 m1 으로 1을 나중에 빼주게 됩니다.
cut, qcut은
이 방법은 RFM 기법에서도 종종 사용되는 방법으로 비즈니스 분석에서 다룰 예정입니다.
Recency, Frequency, Monetary => 고객이 얼마나 최근에, 자주, 많이 구매했는지를 분석할 때 사용합니다.
SalePrice - cut, qcut
이 방법은 RFM 기법에서도 종종 사용되는 방법으로 비즈니스 분석에서 다룰 예정입니다. Recency, Frequency, Monetary => 고객이 얼마나 최근에, 자주, 많이 구매했는지를 분석할 때 사용합니다.
연속된 수치 데이터를 구간화합니다. => 머신러닝 알고리즘에 힌트를 줄 수도 있습니다.
트리모델이라면 너무 잘게 데이터를 나누지 않아 일반화 하는데 도움이 될 수도 있습니다.
그렇다면 데이터는 나누는 기준이 중요한데, EDA를 통해 어떻게 나누는 것이 예측에 도움이 될지 확인합니다.
연속된 수치데이터를 나누는 기준에 따라 모델의 성능에 영향을 주게 됩니다.
오히려 잘못나누면 모델의 성능이 떨어질 수도 있습니다.
LabelEncoder, OrdinalEncoder 의 입력값의 차이?
X와 y의 차이점
feature_names : 학습(훈련), 예측에 사용할 컬럼을 리스트 형태로 만들어서 변수에 담아줍니다.
label_name : 정답값
X_train : feature_names 에 해당되는 컬럼만 train에서 가져옵니다.
학습(훈련)에 사용할 데이터셋 예) 시험의 기출문제
X_test : feature_names 에 해당되는 컬럼만 test에서 가져옵니다.
예측에 사용할 데이터셋 예) 실전 시험문제
y_train : label_name 에 해당 되는 컬럼만 train에서 가져옵니다.
학습(훈련)에 사용할 정답 값 예) 기출문제의 정답
구분이 잘 안 되는 값에 대해 power transform 을 해주기도 하는데 반대로 너무 차이가 많이 나는 값을 줄일 때 사용할 수 있는 방법?
또 어떤 단점이 있을 수 있을까요?
# 결측치 확인
# 결측치 수와 비율을 함께 보고 싶다면 합계와 비율을 구해서 concat으로 합쳐줍니다.
# concat 에서 axis=0 은 행, axis=1은 열을 의미합니다.
# 메서드체이닝을 할 때는 도움말 보기가 잘 동작하지 않기 때문에 도움말을 보기 위해서는 변수에 할당하고 사용하는 것도 좋습니다.
isna_sum = df.isnull().sum()
isna_mean = df.isnull().mean()
pd.concat([isna_sum, isna_mean], axis=1).nlargest(10, 1)