본문 바로가기

메이데이!

[error] ValueError: The least populated class in y has only 1 member, which is too few. The minimum number of groups for any class cannot be less than 2.

반응형

문제 발생

csv 파일의 dataset을 train / test 로 나누려던 중 "ValueError: The least populated class in y has only 1 member, which is too few. The minimum number of groups for any class cannot be less than 2." 에러가 발생했다.

 

문제 해결

dataset = pd.read_csv(filePath, header=None, low_memory=False)

data = dataset[0]
target = dataset[1]

#train & test split
x_train, x_valid, y_train, y_valid = train_test_split(data, target, test_size=0.3, shuffle=True, stratify=target, random_state=34)

위의 코드 중 "stratify=target" 때문에 발생한 문제.

 

stratify : trainset / testset으로 나눌 때, original dataset의 class 비율을 유지하게 한다.

 

위의 오류는 특정 label값을 가진 데이터가 2개 이상이어야 train에 하나, test에 하나가 들어갈 수 있는데, 2개 미만이라면 나눌 수 없기에 발생한다.

 

반응형