통계게시판이지만, 아시는 분 답변 부탁드려요...

머신러닝 기초 수업듣고 숙제하는데 막히네요...

회귀분석 데이터를 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값들이 다르게 나오더라고요...

혹시 아시는분 도움부탁드립니다. ㅜㅜ