무냐의 개발일지
[Python] Scaling (MinMaxScaler, StandardScaler), PCA(차원축소) 본문
| Scaling
① Scaling :
데이터의 범위를 조정하는 과정. MinMaxScaler, StandardScaler 등을 사용해 특성의 스케일을 조정 합니다. 거리기반 모델을 쓸때는 반드시 스케일링 써서 각각 변수의 특성에 따라 동일한 스케일을 지닐수 있게 맞춰주는것이 중요 합니다.
② 주요 Scaling 방법 :
- Standardization : (x-mean/ std) 결과적으로 데이터는 평균이 0이고 표준편차가 1인 분포를 갖게 됩니다.
- Robust Scaling : (x-Q2) / (Q3-Q1) 이 방법은 중앙값과 사분위 범위를 사용하여 데이터를 스케일링합니다. 표준화와 유사하지만, 이상치의 영향을 덜 받습니다.
- MinMaxScaler : (x-min)/ (max-min) 데이터를 0과 1 사이의 범위로 조정합니다. 주로 최소값과 최대값을 사용하여 계산합니다. ex)Deep Learning
③ 각 Scaling 방법의 적합한 상황과 특징:
- Standardization : 아웃라이어가 없는 경우, 변수의 분포가 정규분포를 따를 때 적합합니다.
리니어 리그레이션(연속적인 값 예측), 로지스틱 회귀(분류 문제에 적합한 확률 결과 제공), 서포트 벡터 머신(이진 또는 다중 클래스 분류, 회귀)에 사용됩니다.
주의사항 : 아웃라이어에 민감하므로, 아웃라이어가 존재하지 않을 때 더 효과적입니다.
- Robust Scaling : 아웃라이어가 많은 데이터에 적합 합니다.
특징 : 정규분포를 따르지 않는 데이터에 적용하기 좋은 방법입니다.
- MinMaxScaler : 데이터의 범위를 0에서 1로 제한하고자 할 때 적합 합니다.주로 딥러닝 모델에서 사용됩니다.
특징 : 스케일링 범위를 제한하고자 할 때 유용합니다.
각 변수의 크기(Scale) 중요할 때 사용한다 : K-Means, KNN(거리 기반 모델링) 등
from sklearn.preprocessing import StandardScaler, RobustScaler, MinMaxScaler
ss = StandardScaler()
rs = RobustScaler()
mm = MinMaxScaler()
1. Standard Scaler
#1) 필요한 데이터를 학습시켜준다. (ss의 경우, 평균, 표준편차를 학습한다)
ss.fit(salary_df)
#2) 학습된 정보로 연산을 해준다
ss.transform(salary_df)
#umpy array 형태로 나오고, 열 이름도 없으므로, 아래와 같이 dataframe형식으로 지정해줄 수 있다
ss_df = pd.DataFrame(ss.transform(salary_df), columns= salary_df.columns)
2. Robust Scaler
rs.fit(salary_df)
rs_df = pd.DataFrame(rs.transform(salary_df),columns= salary_df.columns)
3. MinMax Scaler
mm.fit(salary_df)
mm_df = pd.DataFrame(mm.transform(salary_df), columns= salary_df.columns)
참고) fit, transform 한번에 하는 방법
ss.fit_transform(salary_df)
| PCA Analysis
- 정보의 손실을 최소화하는 방향으로, 데이터의 차원을 축소하는 기법
- 목적 : 변수의 갯수를 줄이기 위해, 차원을 축소하기 위해 진행하며, 두 변수의 상관관계가 높으면 하나 없애주는 게 낫다
- 장점 : 시각화할 때 유용하다
- 단점 : 주성분 변수가 어떤 의미, 특성을 가지고 있는지 아무 정보를 가지고 있지 않음
① PCA (Principal Component Analysis) : 차원 축소를 위한 기술. 데이터의 주요 특성을 유지하면서 차원을 줄여 계산 효율성을 높입니다.
② explained_variance_ratio_ : 주로 주성분 분석(Principal Component Analysis, PCA)과 같은 차원 축소 기법에서 사용되는 속성입니다. 이 속성은 각 주성분이 원본 데이터의 분산(variance)을 얼마나 설명하는지에 대한 비율을 나타냅니다.
from sklearn.decomposition import PCA
pca = PCA()
#1)학습시키기
pca.fit(salary_df)
#2)학습된 정보로 연산하기
pd.DataFrame(pca.transform(salary_df))
#2개의 주성분으로만 학습시킨다
pca = PCA(2)
pd.DataFrame(pca.fit_transform(salary_df), columns=['PC1', 'PC2'])
'데싸 추가 독학' 카테고리의 다른 글
[데이터 과학을 위한 통계]#1 EDA 탐색적 데이터분석 (0) | 2024.02.18 |
---|---|
[Python] Heatmap으로 그래프 그리기 (0) | 2024.02.13 |
[Python] 머신러닝 절차 (1) | 2024.02.11 |
[파이썬] 열/ 행 숫자제한 없이 다 보는 방법 (Pandas)/ corr 상삼각,하삼각행렬 표시 (0) | 2024.02.08 |
회귀 모델의 종류!! (0) | 2024.02.01 |