2017-12-09 21 views
0

감정으로 분류 된 30,000 개의 문구가 있습니다.계층화를 실행할 때 범주의 비율을 유지해야합니까?

나는 Naive Bayes를 사용할 것입니다.

다음은 비율입니다 (정서 -> 문구 수).

anger   98 
boredom  157 
empty   659 
enthusiasm  522 
fun   1088 
happiness  2986 
hate   1187 
love   2068 
neutral  6340 
relief  1021 
sadness  4828 
surprise  1613 
worry   7433 

그래서 내 모델 등을 실행하기 위해 데이터 세트를 train/test로 분할해야합니다. 맞습니까?

계층화를 실행할 때 범주의 비율을 유지해야합니까?

즉, 테스트 샘플의 경우 30 %를 선택하면 전체 데이터 집합의 30 % 대신 각 감정의 30 %를 유지해야합니까?

나는 그렇다고 생각하지만, 더 경험 많은 의견을 갖고 싶습니다.

그리고 어떻게 하시겠습니까? 누구든지 파이썬 루프를 실행하거나, 어떤 감정을 테스트하거나, 30 %를 계산하거나 사전에 넣는 대신에 더 나은 방법을 알고 있습니다.

비율을 유지하면서 카테고리 기능으로 계층화하는 트릭이 있습니까?

답변

1

계층화를 실행할 때 범주의 비율을 유지해야합니까?

용어와 관련하여 다소 혼란스러워 보입니다. 계층화 (또는 stratified sampling)의 정의는 정확하게 비율을 유지하는 것이며, 그렇지 않으면 단순 임의 샘플링입니다.

테스트 샘플의 경우 30 %를 선택하면 전체 데이터 집합의 30 % 대신 각 감정의 30 %를 유지해야합니까?

그들은 모순이 아닙니다. 각 카테고리의 30 %를 유지하는 경우 초기 설정의 30 %로 끝나지 않습니까?

비율을 유지하면서 카테고리 기능으로 층화하는 팬더 트릭이 있습니까? model_selection.train_test_split 같은 stratify 옵션이 포함되어 있습니다 (난 당신이 다음에 사용하려고 생각하는)

는 팬더에 대해 알고하지 마십시오,하지만 scikit는 배우기 :

from sklearn.model_selection import train_test_split 
X_train, X_test, y_train, y_test = train_test_split(X, y, 
                stratify=y, 
                test_size=0.3) 
+1

는 설명 주셔서 대단히 감사합니다! –

+0

@AlexanderFrancaFernandes 매우 환영합니다. – desertnaut