일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 태블로퍼블릭
- vlookup
- 태블로
- Delete
- 이전날짜제거
- 외부접속허용
- 아나콘다
- concat
- 오류
- Join
- TabPy
- trim
- split
- 데이터전처리
- 에러
- mysql
- 살려줘
- 정제
- safe mode 해제
- Def
- 함수
- 북마크
- 전처리
- putty
- D2E8DA72
- random.uniform
- Tableau
- SQL
- 파이썬
- 맵차트
- Today
- Total
무던히 하다보면 느는
[파이썬/Python] 리샘플링 (Resampling) 본문
데이터가 불균형한 분포를 가지는 경우 모델의 학습이 제대로 이루어지지 않을 확률이 높다.
이 문제를 해결하기 위해 언더 샘플링과 오버 샘플링이 있다.
🐱🏍 방법 1
np.random.choicec로 인덱스 랜덤 추출
number_records_fraud = len(data[data['Class']==1])
fraud_indices = np.array(data[data['Class']==1].index) # 사기
normal_indices = np.array(data[data['Class']==0].index) # 정상
Class가 1인 값들을 number_records_fraud에 넣고
random_normal_indices = np.random.choice(normal_indices, number_records_fraud, replace = False )
under_sample_indices = np.concatenate([fraud_indices, random_normal_indices])
np.random.choice로 임의표본추출해줌
np.random.choice(a,size,replace=True) # a는 모집단 a를 뜻함
pandas 결합은 concat
python list 결합은 concatenate
https://rfriend.tistory.com/548
[Python numpy] np.random.choice() 메소드로 임의표본 추출하기 (무작위, 확률 샘플링)
이번 포스팅에서는 Python numpy 모듈의 random.choice() 메소드를 사용하여 임의(무작위, 확률) 추출 (random sampling)하는 방법을 소개하겠습니다. numpy.random.choice() 메소드의 기본 Syntax는 아래와 같습..
rfriend.tistory.com
🐱🏍 방법 2
랜덤시드 생성하고 sample 함수로 추출
import numpy as np
import tensorflow as tf
RANDOM_SEED = 42
TRAINING_SAMPLE = 20000
VALIDATE_SIZE = 0.2
np.random.seed(RANDOM_SEED)
rn.seed(RANDOM_SEED)
tf.set_random_seed(RANDOM_SEED)
RATIO = 15
normal = data[data['Class'] == 0]
fraud = data[data['Class'] == 1]
normal_undersampled = normal.sample(
int(len(fraud) * RATIO),
random_state=RANDOM_SEED) # 정상에서의 undersampling
#visualisation_initial = pd.concat([fraud, normal_undersampled])
#column_names = list(visualisation_initial.drop('Class', axis=1).columns)
0 28432
1 30
정상인 clean 에서 .sample함수를 사용함으로써 원하는 갯수의 추출이 가능함.
사기인 fraud 인 친구들의 len에서 임의의 비율을 곱해줘서 랜덤으로 추출
05-05. 샘플 추출 (sample)
####DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=Non ...
wikidocs.net
끗 🐢
추가로 data.sample(frac=0.4) 하면 전체에 대한 추출 비율을 정할 수 있다.
그리고 번외로 SMOTE도 있음
언더 샘플링(Undersampling)과 오버 샘플링(Oversampling)
* 해당 포스팅은 파이썬 머신러닝 완벽 가이드(권철민, 2019) 교재를 참고하여 공부하며 작성한 글입니다. 순서 언더 샘플링과 오버 샘플링의 개념 SMOTE 개념 SMOTE 코드 1. 언더 샘플링과 오버 샘
hwi-doc.tistory.com
'파이썬' 카테고리의 다른 글
[파이썬/Python] 파이프라인(2) (2) | 2022.07.12 |
---|---|
[파이썬/Python] 파이프라인 (0) | 2022.07.12 |
[파이썬/Python] numpy array와 list 차이점 (0) | 2022.07.10 |
[파이썬/Python] 여러개의 데이터프레임 concat으로 결합 (0) | 2022.06.21 |
[파이썬/Python] 판다스 빈 칸 제거하기 (전처리) (0) | 2022.06.20 |