
def solution(arr):
answer = []
if len(arr) <= 1:
return [-1]
min_answer = min(arr)
arr.remove(min_answer)
return arr
탐색적 데이터 분석 (EDA)
데이터의 시각화, 기술통계 등의 방법을 통해 데이터를 이해하고 탐구하는 과정
기술통계를 통한 예시
- tips.describe()
시각화를 통한 예시
- countplot : 범주형 자료의 빈도 수 시각화
- barplot: 범주형 자료의 시각화
- boxplot: 수치형& 범주형 자료의 시각화
- histogram: 수치형 자료 빈도 시각화
- scatterplot: 수치형끼리 자료의 시각화
- pairplot: 전체 변수에 대한 시각화
데이터 전처리
1. 이상치
1) ESD 이용한 이상치 발견
- 데이터가 정규분포를 따른다고 가정할 때, 평균에서 표준편차의 3배 이상 떨어진 값
- 모든 데이터가 정규 분포를 따르지 않을 수 있기 때문에 다음 상황에서는 제한됨
- 데이터가 크게 비대칭일 때(Log변환 등을 노려볼 수 있음)
- 샘플 크기가 작을 경우
import numpy as np
mean = np.mean(data)
std = np.std(data)
upper_limit = mean + 3*std
lower_limit = mean - 3*std
2) IQR 이용한 이상치 발견
- ESD와 동일하게 데이터가 비대칭적이거나 샘플사이즈가 작은 경우 제한됨
Q1 = df['column'].quantile(0.25)
Q3 = df['column'].qunatile(0.75)
IQR = Q3 - Q1
uppper_limit = Q3 + 1.5*IQR
lower_limit = Q1 - 1.5*IQR
2. 결측치
수치형 데이터 처리 방법
- 평균 값 대치: 대표적인 대치 방법
- 중앙값 대치: 데이터에 이상치가 많아 평균 값이 대표성이 없다면 중앙 값을 이용
범주형 데이터 처리 방법
- 최빈값 대치
사용함수
간단한 삭제 & 대치
- df.dropna(axis = 0): 행 삭제
- df.dropna(axis = 1): 열 삭제
- df.fillna(value): 특정 값으로 대치
알고리즘 이용
- sklearn.impute.SimpleImputer:평균, 중앙, 최빈값으로 대치
- sklearn.impute.IterativeImputer: 다변량대치(회귀 대치)
- sklearn.impute.KNNImputer: KNN 알고리즘을 이용한 대치
3. 인코딩
어떤 정보를 정해진 규칙에 따라 변환하는 것
1) 레이블 인코딩
문자열 범주형 값을 고유한 숫자로 할당
[특징]
- 장점: 모델이 처리하기 쉬운 수치형으로 데이터 변환
- 단점: 실제로는 그렇지 않은데, 순서 간 크기에 의미가 부여되어 모델이 잘못 해석 할 수 있음
사용 함수
- sklearn.preprocessing.LabelEncoder
- 메소드
- fit: 데이터 학습
- transform: 정수형 데이터로 변환
- fit_transform: fit과 transform을 연결하여 한번에 실행
- inverse_transform : 인코딩된 데이터를 원래 문자열로 변환
- 속성
- classes_: 인코더가 학습한 클래스(범주)
2) 원 핫 인코딩
각 범주를 이진 형식으로 변환하는 기법
[특징]
- 장점: 각 범주가 독립적으로 표현되어, 순서가 중요도를 잘못 학습하는 것을 방지, 명목형 데이터에 권장
- 단점: 범주 개수가 많을 경우 차원이 크게 증가(차원의 저주) , 모델의 복잡도를 증가, 과적합 유발
사용 함수
- pd.get_dummies
- sklearn.preprocessing.OneHotEncoder
- 메소드(LabelEncoder와 동일)
- categories_: 인코더가 학습한 클래스(범주)
- get_feature_names_out(): 학습한 클래스 이름(리스트)
4. 스케일링
수치형 자료에 대한 전처리
1) 표준화 : 각 데이터에 평균을 빼고 표준편차를 나누어 평균을 0 표준편차를 1로 조정하는 방법
- 함수: sklearn.preprocessing.StandardScaler
- 메소드
- fit : 데이터학습(평균과 표준편차를 계산)
- transform: 데이터 스케일링 진행
- 속성
- mean_: 데이터의 평균 값
- scale_, var_: 데이터의 표준 편차,분산 값
- n_features_in_: fit 할 때 들어간 변수 개수
- feature_names_in_: fit 할 때 들어간 변수 이름
- n_samples_seen_ : fit 할 때 들어간 데이터의 개수
- 메소드
장점
- 이상치가 있거나 분포가 치우쳐져 있을 때 유용
- 모든 특성의 스케일을 동일하게 맞춤
단점
- 데이터의 최소-최대 값이 정해지지 않음
2) 정규화 : 데이터를 0과 1사이 값으로 조정
- 함수: sklearn.preprocessing.MinMaxScaler
- 속성
- data_min_: 원 데이터의 최소 값
- data_max_: 원 데이터의 최대 값
- data_range_ : 원 데이터의 최대-최소 범위
- 속성
장점
- 모든 특성의 스케일을 동일하게 맞춤
- 최대-최소 범위가 명확
단점
- 이상치에 영향을 많이 받을 수 있음(반대로 말하면 이상치가 없을 때 유용)
3) 로버스트 스케일링 : 중앙값과 IQR을 사용하여 스케일링
특징
- 장점: 이상치의 영향에 덜 민감
- 단점: 표준화와 정규화에 비해 덜 사용됨
함수: sklearn.preprocessing.RobustScaler
- 속성
- center_: 훈련 데이터의 중앙값
'TIL' 카테고리의 다른 글
| 심화 프로젝트 2일차 (0) | 2025.02.05 |
|---|---|
| TIL - 코드카타, 머신러닝 심화 1주차 (1) | 2025.01.27 |
| TIL - 코드카타, 머신러닝 기초 (0) | 2025.01.23 |
| TIL - 코드카타, 머신러닝 기초(~1-12) (0) | 2025.01.22 |
| TIL - 코드카타, 머신러닝 기초 (~1-7) (0) | 2025.01.21 |