006 PyCaret 내장 데이터세트 활용하기
키워드: 내장 데이터, get_data
개요
PyCaret은 학습과 실험을 위한 다양한 내장 데이터세트를 제공합니다. 이 데이터세트들을 활용하면 별도의 데이터 수집 없이 바로 머신러닝을 실습할 수 있습니다. 이 글에서는 PyCaret 내장 데이터세트의 종류와 활용 방법을 알아보겠습니다.
실습 환경
- Python 버전: 3.11 권장
- Python 3.11은 2027년 말까지 지원되며, PyCaret 호환 최신 버전입니다.
- 필요 패키지:
pycaret[full]>=3.0, pandas, matplotlib
pip install pycaret[full]>=3.0 pandas matplotlib
Google Colab 사용 불가 Google Colab은 2025년 8월부터 Python 3.12만 지원하여 PyCaret(3.8~3.11) 실습이 불가능합니다. 로컬 환경이나 Docker를 사용해 주세요.
get_data() 함수
get_data() 함수는 PyCaret의 내장 데이터세트를 불러오는 핵심 함수입니다.
기본 사용법
from pycaret.datasets import get_data
# 006 데이터세트 로드
data = get_data('iris')
사용 가능한 데이터세트 목록 확인
# 006 전체 데이터세트 목록
index = get_data('index')
print(index)
출력:
Dataset ... Description
0 iris ... Fisher's Iris flower dataset for classification
1 diabetes ... Pima Indians Diabetes Database
2 wine ... Wine recognition dataset UCI ML
3 cancer ... Wisconsin Diagnostic Breast Cancer (WDBC)
...
분류용 데이터세트
1. iris (붓꽃 데이터)
data = get_data('iris')
print(data.shape) # (150, 5)
| 특징 | 값 |
|---|---|
| 행 수 | 150 |
| 특성 수 | 4 |
| 타겟 | species (3개 클래스) |
| 난이도 | 입문 |
특성: sepal_length, sepal_width, petal_length, petal_width
2. diabetes (당뇨병 데이터)
data = get_data('diabetes')
print(data.shape) # (768, 9)
| 특징 | 값 |
|---|---|
| 행 수 | 768 |
| 특성 수 | 8 |
| 타겟 | Class variable (이진 분류) |
| 난이도 | 초급 |
3. cancer (유방암 데이터)
data = get_data('cancer')
print(data.shape) # (569, 31)
| 특징 | 값 |
|---|---|
| 행 수 | 569 |
| 특성 수 | 30 |
| 타겟 | diagnosis (이진 분류) |
| 난이도 | 중급 |
4. credit (신용카드 사기 탐지)
data = get_data('credit')
print(data.shape) # (284807, 31)
| 특징 | 값 |
|---|---|
| 행 수 | 284,807 |
| 특성 수 | 30 |
| 타겟 | Class (불균형 이진 분류) |
| 난이도 | 고급 |
5. titanic (타이타닉 생존 예측)
data = get_data('titanic')
print(data.shape) # (891, 12)
| 특징 | 값 |
|---|---|
| 행 수 | 891 |
| 특성 수 | 11 |
| 타겟 | Survived (이진 분류) |
| 난이도 | 초급 |
특징: 결측치가 있어 전처리 학습에 좋음
회귀용 데이터세트
1. boston (보스턴 주택 가격)
data = get_data('boston')
print(data.shape) # (506, 14)
| 특징 | 값 |
|---|---|
| 행 수 | 506 |
| 특성 수 | 13 |
| 타겟 | medv (주택 가격) |
| 난이도 | 입문 |
2. insurance (보험료 예측)
data = get_data('insurance')
print(data.shape) # (1338, 7)
| 특징 | 값 |
|---|---|
| 행 수 | 1,338 |
| 특성 수 | 6 |
| 타겟 | charges (보험료) |
| 난이도 | 초급 |
특징: 수치형 + 범주형 혼합
3. diamond (다이아몬드 가격)
data = get_data('diamond')
print(data.shape) # (53940, 10)
| 특징 | 값 |
|---|---|
| 행 수 | 53,940 |
| 특성 수 | 9 |
| 타겟 | Price |
| 난이도 | 중급 |
4. house (집값 예측)
data = get_data('house')
print(data.shape) # (1460, 81)
| 특징 | 값 |
|---|---|
| 행 수 | 1,460 |
| 특성 수 | 80 |
| 타겟 | SalePrice |
| 난이도 | 고급 |
특징: 많은 특성과 결측치로 특성 선택 학습에 좋음
클러스터링용 데이터세트
1. mice (마우스 단백질 발현)
data = get_data('mice')
print(data.shape) # (1080, 82)
| 특징 | 값 |
|---|---|
| 행 수 | 1,080 |
| 특성 수 | 82 |
| 타겟 | 없음 (비지도) |
| 난이도 | 고급 |
2. jewellery (보석 데이터)
data = get_data('jewellery')
print(data.shape) # (505, 4)
| 특징 | 값 |
|---|---|
| 행 수 | 505 |
| 특성 수 | 4 |
| 타겟 | 없음 |
| 난이도 | 입문 |
이상치 탐지용 데이터세트
1. anomaly (이상 거래)
data = get_data('anomaly')
2. kddcup99 (네트워크 침입 탐지)
data = get_data('kddcup99')
데이터세트 활용 예제
분류: 타이타닉 생존 예측
from pycaret.datasets import get_data
from pycaret.classification import *
# 006 데이터 로드
data = get_data('titanic')
# 006 기본 정보 확인
print(f"데이터 크기: {data.shape}")
print(f"\n타겟 분포:")
print(data['Survived'].value_counts())
# 006 PyCaret 설정
clf = setup(
data=data,
target='Survived',
session_id=42,
verbose=False
)
# 006 모델 비교
best = compare_models(n_select=3)
# 006 최고 모델 튜닝
tuned = tune_model(best[0])
# 006 예측
predictions = predict_model(tuned)
회귀: 보험료 예측
from pycaret.datasets import get_data
from pycaret.regression import *
# 006 데이터 로드
data = get_data('insurance')
# 006 데이터 확인
print(data.describe())
# 006 PyCaret 설정
reg = setup(
data=data,
target='charges',
session_id=42,
verbose=False
)
# 006 모델 비교
best = compare_models()
# 006 시각화
plot_model(best, plot='residuals')
클러스터링: 고객 세분화
from pycaret.datasets import get_data
from pycaret.clustering import *
# 006 데이터 로드
data = get_data('jewellery')
# 006 PyCaret 설정
clust = setup(data, session_id=42, verbose=False)
# 006 K-Means 모델 생성
kmeans = create_model('kmeans', num_clusters=4)
# 006 시각화
plot_model(kmeans, plot='cluster')
# 006 라벨 할당
labeled = assign_model(kmeans)
print(labeled['Cluster'].value_counts())
데이터세트 요약표
| 데이터세트 | 유형 | 행 수 | 특성 수 | 난이도 | 학습 목적 |
|---|---|---|---|---|---|
| iris | 분류 | 150 | 4 | 입문 | 다중 분류 기초 |
| titanic | 분류 | 891 | 11 | 초급 | 결측치 처리 |
| diabetes | 분류 | 768 | 8 | 초급 | 이진 분류 |
| cancer | 분류 | 569 | 30 | 중급 | 고차원 데이터 |
| credit | 분류 | 284,807 | 30 | 고급 | 불균형 데이터 |
| boston | 회귀 | 506 | 13 | 입문 | 회귀 기초 |
| insurance | 회귀 | 1,338 | 6 | 초급 | 범주형+수치형 |
| diamond | 회귀 | 53,940 | 9 | 중급 | 대용량 데이터 |
| house | 회귀 | 1,460 | 80 | 고급 | 특성 선택 |
| jewellery | 클러스터링 | 505 | 4 | 입문 | 군집화 기초 |
정리
get_data('index')로 전체 데이터세트 목록을 확인할 수 있습니다.- 분류, 회귀, 클러스터링, 이상치 탐지 등 다양한 문제 유형의 데이터가 준비되어 있습니다.
- 입문자는 iris, titanic, insurance, jewellery부터 시작하세요.
- 각 데이터세트는 특정 학습 목적(결측치 처리, 불균형 데이터 등)에 맞게 활용할 수 있습니다.
다음 글 예고
다음 글에서는 setup() 함수 기본 이해에 대해 알아보겠습니다. PyCaret의 가장 중요한 함수인 setup()의 역할과 기본 사용법을 자세히 다룹니다.
PyCaret 머신러닝 마스터 시리즈 #006