데이터 분석이나 머신러닝을 수행할 때, 데이터를 적절하게 분할하는 것은 매우 중요합니다. 특히 학습용 데이터와 테스트용 데이터를 나누어 모델의 성능을 평가하고, 데이터 중복을 방지하기 위해 다양한 데이터 분할 방식이 활용됩니다. 이 글에서는 집합(set) 자료구조를 이용한 데이터 분할 방법에 대해 알아보고, 이를 위한 간단한 예제 코드를 소개합니다.
집합(Set)의 특징과 장점
파이썬에서 **집합(set)**은 중복된 데이터를 허용하지 않고, 순서가 없다는 특징이 있습니다. 이러한 특성을 이용하면 데이터 중복을 쉽게 방지할 수 있습니다. 예를 들어, 전체 데이터에서 학습용 데이터와 테스트용 데이터를 중복 없이 나누고자 할 때 집합을 사용하면 매우 편리합니다.
집합을 이용한 데이터 분할의 주요 장점은 다음과 같습니다:
- 중복 제거: 집합은 중복을 허용하지 않기 때문에, 데이터를 분할할 때 중복된 값이 자동으로 제거됩니다.
- 빠른 연산 속도: 집합의 연산은 리스트나 다른 데이터 구조보다 상대적으로 빠릅니다.
- 유연성: 교집합, 합집합, 차집합과 같은 집합 연산을 통해 데이터를 다양한 방식으로 쉽게 나눌 수 있습니다.
집합을 이용한 데이터 분할 예제
먼저, 간단한 데이터셋을 생성한 후, 집합을 이용해 학습용 데이터와 테스트용 데이터를 나누는 방법을 살펴보겠습니다.
1. 예제 데이터 생성
아래와 같이 1부터 10까지의 숫자를 가진 데이터셋을 만들어보겠습니다.
# 예제 데이터셋
data = list(range(1, 11)) # {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
2. 데이터 분할
전체 데이터셋에서 임의의 70%를 학습 데이터로, 나머지 30%를 테스트 데이터로 분할한다고 가정합니다. 이때, random.sample() 함수를 사용해 무작위로 샘플을 추출하되, 집합을 이용해 학습 데이터와 테스트 데이터의 중복이 없도록 설정할 수 있습니다.
import random
# 전체 데이터셋
data = list(range(1, 11))
# 학습용 데이터로 70% 추출
train_size = int(len(data) * 0.7)
train_data = set(random.sample(data, train_size))
# 테스트용 데이터는 전체 데이터에서 학습 데이터를 제외한 부분으로 설정
test_data = set(data) - train_data
print("학습 데이터:", train_data)
print("테스트 데이터:", test_data)
3. 결과 확인
위 코드에서는 train_data와 test_data가 겹치지 않도록 설정했기 때문에 학습용 데이터와 테스트용 데이터가 중복 없이 잘 나누어졌습니다. 실행 결과는 다음과 비슷할 것입니다.
집합을 이용한 데이터 분할의 활용
이 방법은 데이터 전처리 단계에서 유용하게 사용할 수 있습니다. 특히 다음과 같은 상황에서 효과적입니다:
- 학습 데이터와 테스트 데이터의 중복 제거가 필요한 경우
- 데이터의 특정 비율을 유지하며 무작위로 데이터를 분할해야 하는 경우
- 중복 검사를 효율적으로 수행하여 중복된 레코드를 제거하고자 하는 경우
결론
집합을 이용한 데이터 분할은 데이터 분석 및 머신러닝에서 매우 유용한 기법입니다. 집합의 특징을 활용하면 중복 문제를 쉽게 해결할 수 있으며, 데이터 분할이 보다 직관적이고 효율적이게 됩니다. 특히 데이터 전처리 과정에서 이 방법을 활용해보세요.
'Python > 빅데이터' 카테고리의 다른 글
Pandas 자주 사용하는 함수 (0) | 2024.09.28 |
---|---|
빅데이터 예제 : 타이타닉 데이터 로 보는 나이와 성별에 따른 생존율 (0) | 2024.09.24 |