아시는 분 답변 부탁드려요...
머신러닝 기초 수업듣고 숙제하는데 막히네요...
회귀분석 데이터를 traini test 셋으로 나누는 방법 중에서요...
변수, 샘플의 분포가 이질적이라 이 이질적 분포를 training set과 test set으로 나눌 때 사용하는 것 계층화 샘플링(strarifying)을 이해했어요.
Y와 상관관계가 가장 높은 X1을 기준으로 계층화를 할 건데요...
파이썬 코드를 보니 pandas의 cut이란걸 사용해서
bin을 넣어주고, label을 붙여줘서 새로 분류한 다음에,
이걸 train, test 셋 분류할 때, tratify=X1_category란 걸 넣어서 바꾸더라고요...
(아래)
X1_category = pd.cut(df['X1'],
bins=[0., 30.0, 70.0, 130.0, 200., 400., 1200],
labels=[1,2,3,4,5,6])
X1_category
train_set, test_set = train_test_split(df,
test_size=0.2,
shuffle=True,
random_state=0,
stratify=X1_category)
제가 궁금한 거는, 위에서 bin을 나누는 방법이나, 전해오는 룰 같은게 있을까요??
왜냐하면 수업에서는 딱히 말해주진 않았던거 같고
저 부분을 바꾸니까 실제
회귀모형에서 r2값들이 다르게 나오더라고요...
혹시 아시는분 도움부탁드립니다. ㅜㅜ
bins=[0., 30.0, 70.0, 130.0, 200., 400., 1200], 이 부분의 숫자들은 제가 임의로 넣은거구요...이걸 어떻게 넣느냐가 문제인데, 해당 컬럼(X1)은 '기계의 성능'입니다. 이 컬럼의 히스토그램을 보면 정규분포를 따르지 않고 오른쪽으로 꼬리가 깁니다.