🤖

본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.

⚠️

본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.

이미지 로딩 중...

Scikit-learn 내장 데이터셋 완벽 가이드 - 슬라이드 1/7
A

AI Generated

2025. 12. 2. · 13 Views

Scikit-learn 내장 데이터셋 완벽 가이드

머신러닝 입문자를 위한 Scikit-learn 내장 데이터셋 활용법을 알아봅니다. 붓꽃 분류부터 손글씨 인식까지, 실습에 꼭 필요한 데이터셋을 다루는 방법을 배웁니다.


목차

  1. 내장_데이터셋_종류_소개
  2. Iris_데이터셋_로드하기
  3. California_Housing_데이터셋
  4. MNIST_손글씨_데이터셋
  5. 데이터셋_구조_이해하기
  6. 커스텀_데이터_로드하기

1. 내장 데이터셋 종류 소개

김개발 씨는 오늘부터 머신러닝 공부를 시작하기로 마음먹었습니다. 그런데 막상 시작하려니 데이터는 어디서 구해야 할지 막막합니다.

인터넷을 뒤지며 CSV 파일을 다운로드하고, 전처리하는 것만 해도 하루가 다 갈 것 같았습니다.

Scikit-learn은 머신러닝 학습에 필요한 다양한 내장 데이터셋을 제공합니다. 마치 요리 학원에서 실습용 재료를 미리 손질해서 제공하는 것과 같습니다.

덕분에 우리는 데이터 수집에 시간을 낭비하지 않고 바로 알고리즘 학습에 집중할 수 있습니다.

다음 코드를 살펴봅시다.

from sklearn import datasets

# Scikit-learn에서 제공하는 주요 데이터셋 목록
# 분류용 데이터셋
iris = datasets.load_iris()        # 붓꽃 분류 (150개 샘플)
wine = datasets.load_wine()        # 와인 분류 (178개 샘플)
digits = datasets.load_digits()    # 손글씨 숫자 (1797개 샘플)

# 회귀용 데이터셋
diabetes = datasets.load_diabetes()  # 당뇨병 진행도 예측
# housing = datasets.load_boston()   # 주택 가격 예측 (deprecated)

# 데이터셋 이름 확인
print("사용 가능한 데이터셋들:")
print("- Iris: 붓꽃 품종 분류")
print("- Wine: 와인 품종 분류")
print("- Digits: 손글씨 숫자 인식")

김개발 씨는 입사 후 첫 사내 스터디에 참여하게 되었습니다. 주제는 머신러닝 기초.

설레는 마음으로 노트북을 펼쳤지만, 첫 번째 난관에 부딪혔습니다. "자, 그럼 데이터를 준비해서 오세요." 스터디장의 말에 김개발 씨는 당황했습니다.

데이터는 대체 어디서 구한단 말인가요? 다행히 옆자리의 박시니어 씨가 도움의 손길을 내밀었습니다.

"걱정 마세요. Scikit-learn에는 연습용 데이터가 이미 들어있어요." 그렇다면 내장 데이터셋이란 정확히 무엇일까요?

쉽게 비유하자면, 내장 데이터셋은 마치 조립식 가구에 들어있는 샘플 나사와 같습니다. 실제로 가구를 조립해보기 전에 연습용으로 먼저 끼워볼 수 있도록 제공되는 것이죠.

Scikit-learn도 마찬가지로, 머신러닝 알고리즘을 연습해볼 수 있도록 잘 정제된 데이터를 함께 제공합니다. 만약 이런 내장 데이터셋이 없다면 어땠을까요?

입문자들은 캐글(Kaggle)이나 UCI 저장소를 뒤져가며 데이터를 찾아야 했을 것입니다. 다운로드한 CSV 파일의 인코딩 문제로 씨름하고, 결측치와 이상치를 처리하느라 정작 알고리즘 공부는 뒷전이 되었을 것입니다.

많은 입문자들이 이 과정에서 지쳐 포기하곤 합니다. 바로 이런 문제를 해결하기 위해 Scikit-learn 개발진은 내장 데이터셋을 준비해두었습니다.

**load_iris()**는 가장 유명한 붓꽃 데이터셋을 불러옵니다. 150개의 붓꽃 샘플이 품종별로 잘 정리되어 있어 분류 알고리즘을 처음 배울 때 안성맞춤입니다.

**load_wine()**은 와인의 화학적 성분으로 품종을 구분하는 데이터이고, **load_digits()**는 손으로 쓴 숫자 이미지 데이터입니다. 회귀 문제를 연습하고 싶다면 **load_diabetes()**를 사용할 수 있습니다.

당뇨병 환자의 1년 후 병 진행도를 예측하는 데이터로, 연속적인 수치를 예측하는 연습에 적합합니다. 위의 코드를 살펴보면, 데이터를 불러오는 방식이 매우 간단하다는 것을 알 수 있습니다.

datasets 모듈을 임포트하고, 원하는 데이터셋의 load 함수를 호출하면 끝입니다. 복잡한 파일 경로나 URL을 다룰 필요가 전혀 없습니다.

실제 스터디에서 김개발 씨는 Iris 데이터셋으로 첫 번째 분류 모델을 만들어보았습니다. 데이터 준비에 시간을 쓰지 않으니 알고리즘 원리를 이해하는 데 더 집중할 수 있었습니다.

다만 주의할 점이 있습니다. 예전에는 load_boston() 함수로 보스턴 주택 가격 데이터를 불러올 수 있었지만, 윤리적 문제로 현재는 deprecated 되었습니다.

회귀 연습이 필요하다면 캘리포니아 주택 데이터셋을 사용하는 것이 좋습니다. 박시니어 씨의 설명을 들은 김개발 씨는 안도의 한숨을 내쉬었습니다.

"다행이다, 이제 알고리즘 공부에만 집중하면 되겠네요!"

실전 팁

💡 - 분류 연습에는 load_iris(), 회귀 연습에는 load_diabetes()로 시작하세요

  • load_boston()은 deprecated 되었으니 fetch_california_housing()을 사용하세요

2. Iris 데이터셋 로드하기

첫 스터디 시간, 박시니어 씨가 화면에 코드를 띄웠습니다. "자, 머신러닝의 'Hello World'라고 할 수 있는 Iris 데이터셋부터 시작해볼까요?" 김개발 씨는 노트북을 꺼내며 집중하기 시작했습니다.

Iris 데이터셋은 1936년 통계학자 피셔가 발표한 역사적인 데이터입니다. 세 종류의 붓꽃(Setosa, Versicolor, Virginica)을 꽃잎과 꽃받침의 길이, 너비로 구분합니다.

총 150개의 샘플로 구성되어 있어 머신러닝 입문에 가장 많이 사용됩니다.

다음 코드를 살펴봅시다.

from sklearn.datasets import load_iris

# Iris 데이터셋 로드
iris = load_iris()

# 데이터셋 구성 요소 확인
print("특성 이름:", iris.feature_names)
print("타겟 이름:", iris.target_names)
print("데이터 형태:", iris.data.shape)
print("타겟 형태:", iris.target.shape)

# 첫 번째 샘플 확인
print("\n첫 번째 붓꽃 데이터:")
print(f"  특성값: {iris.data[0]}")
print(f"  품종: {iris.target_names[iris.target[0]]}")

박시니어 씨가 설명을 이어갔습니다. "Iris 데이터셋은 머신러닝계의 전설이에요.

1936년에 만들어졌는데, 아직도 전 세계 수많은 입문자들이 이 데이터로 첫 발을 떼고 있죠." 김개발 씨는 고개를 갸웃했습니다. "그런데 왜 하필 붓꽃인가요?" Iris 데이터셋은 영국의 통계학자 로널드 피셔가 분류 기법을 설명하기 위해 수집한 데이터입니다.

마치 수학에서 1 + 1 = 2로 덧셈을 배우듯, 머신러닝에서는 Iris로 분류를 배우는 것이 전통이 되었습니다. 이 데이터셋에는 세 종류의 붓꽃이 담겨 있습니다.

Setosa, Versicolor, Virginica가 바로 그것입니다. 각 품종마다 50개씩, 총 150개의 샘플이 준비되어 있습니다.

충분히 작아서 빠르게 학습할 수 있으면서도, 분류 알고리즘의 원리를 이해하기에는 충분한 양입니다. 각 붓꽃 샘플에는 네 가지 특성이 기록되어 있습니다.

sepal length(꽃받침 길이), sepal width(꽃받침 너비), petal length(꽃잎 길이), petal width(꽃잎 너비)가 센티미터 단위로 측정되어 있습니다. 코드를 살펴보면, load_iris() 함수 하나로 모든 준비가 끝납니다.

반환되는 객체에는 여러 속성이 담겨 있는데, 가장 중요한 것은 datatarget입니다. iris.data에는 150개 샘플의 특성값이 2차원 배열로 저장되어 있습니다.

shape이 (150, 4)라는 것은 150개의 행(샘플)과 4개의 열(특성)을 의미합니다. iris.target에는 각 샘플의 정답 레이블이 0, 1, 2로 저장되어 있습니다.

feature_names 속성을 출력하면 각 특성의 이름을 확인할 수 있습니다. 마찬가지로 target_names를 출력하면 0, 1, 2가 각각 어떤 품종을 의미하는지 알 수 있습니다.

실제로 첫 번째 샘플을 출력해보면 [5.1, 3.5, 1.4, 0.2]라는 값과 함께 Setosa라는 품종명이 나옵니다. 꽃받침 길이가 5.1cm, 너비가 3.5cm인 붓꽃이 Setosa 품종이라는 의미입니다.

김개발 씨가 직접 코드를 실행해보았습니다. "오, 정말 간단하네요.

데이터가 이미 숫자로 깔끔하게 정리되어 있어서 바로 모델에 넣을 수 있겠어요." 박시니어 씨가 고개를 끄덕였습니다. "맞아요.

그래서 입문용으로 딱이에요. 전처리 걱정 없이 알고리즘 자체에 집중할 수 있거든요."

실전 팁

💡 - iris.DESCR을 출력하면 데이터셋에 대한 상세한 설명을 볼 수 있습니다

  • Setosa는 다른 두 품종과 확연히 구분되어 분류가 쉽습니다

3. California Housing 데이터셋

"회귀 문제도 연습해봐야죠." 박시니어 씨가 새로운 데이터셋을 소개하기 시작했습니다. 김개발 씨는 분류와 회귀의 차이점을 막 배운 터라, 실제로 회귀 문제를 다뤄보고 싶었습니다.

California Housing 데이터셋은 1990년대 캘리포니아 주택 가격 데이터입니다. 예전에 사용되던 Boston Housing이 deprecated된 후 회귀 문제의 대표 데이터셋이 되었습니다.

인구, 소득, 위치 등 8개 특성으로 주택 가격을 예측하는 연습에 사용됩니다.

다음 코드를 살펴봅시다.

from sklearn.datasets import fetch_california_housing
import numpy as np

# California Housing 데이터셋 로드
housing = fetch_california_housing()

# 기본 정보 확인
print("특성 이름:", housing.feature_names)
print("데이터 형태:", housing.data.shape)
print("타겟 형태:", housing.target.shape)

# 특성별 평균값 확인
print("\n특성별 평균값:")
for i, name in enumerate(housing.feature_names):
    print(f"  {name}: {np.mean(housing.data[:, i]):.2f}")

# 주택 가격 통계
print(f"\n주택 가격 범위: ${housing.target.min()*100000:.0f} ~ ${housing.target.max()*100000:.0f}")

"예전에는 Boston Housing 데이터셋을 많이 썼어요." 박시니어 씨가 설명을 시작했습니다. "그런데 이 데이터에 인종 관련 변수가 포함되어 있어서 윤리적 문제가 제기됐죠.

그래서 지금은 California Housing을 대신 사용합니다." 김개발 씨는 처음 듣는 이야기에 귀를 기울였습니다. 데이터 과학에도 윤리가 중요하다는 것을 새삼 느꼈습니다.

California Housing 데이터셋은 1990년 미국 인구조사 데이터를 기반으로 합니다. 캘리포니아주의 각 블록 그룹별 주택 정보가 담겨 있습니다.

총 20,640개의 샘플이 있어서 Iris보다 훨씬 규모가 큽니다. 이 데이터셋이 Iris와 다른 점은 회귀 문제라는 것입니다.

분류가 "이 붓꽃은 A인가, B인가?"를 맞추는 것이라면, 회귀는 "이 집의 가격은 얼마인가?"처럼 연속적인 숫자를 예측합니다. 데이터에는 8가지 특성이 포함되어 있습니다.

MedInc(중간 소득), HouseAge(주택 연수), AveRooms(평균 방 개수), AveBedrms(평균 침실 개수), Population(인구), AveOccup(평균 거주 인원), Latitude(위도), Longitude(경도)입니다. 주목할 점은 fetch_california_housing() 함수를 사용한다는 것입니다.

load_로 시작하는 함수들은 라이브러리에 내장된 작은 데이터셋을 불러오지만, fetch_로 시작하는 함수들은 인터넷에서 더 큰 데이터셋을 다운로드합니다. 코드에서 housing.target에는 각 블록의 중간 주택 가격이 10만 달러 단위로 저장되어 있습니다.

예를 들어 target 값이 2.5라면 실제 가격은 25만 달러입니다. 김개발 씨가 코드를 실행해보았습니다.

"20,640개라... Iris보다 훨씬 많네요.

학습하는 데 시간이 좀 걸리겠어요?" 박시니어 씨가 웃으며 답했습니다. "현대 컴퓨터로는 금방이에요.

오히려 실제 업무에서 다루는 데이터는 이것보다 수십, 수백 배는 더 크답니다." 실무에서는 주택 가격 예측 모델이 다양하게 활용됩니다. 부동산 투자 분석, 대출 심사, 보험료 산정 등에 비슷한 원리가 적용됩니다.

실전 팁

💡 - fetch_ 함수는 처음 실행 시 데이터를 다운로드하므로 인터넷 연결이 필요합니다

  • 타겟 값에 100,000을 곱하면 실제 달러 가격이 됩니다

4. MNIST 손글씨 데이터셋

"이번에는 좀 더 재미있는 데이터를 볼까요?" 박시니어 씨가 손글씨 숫자 이미지를 화면에 띄웠습니다. 0부터 9까지 사람들이 직접 쓴 숫자들이었습니다.

김개발 씨의 눈이 반짝였습니다.

Digits 데이터셋은 손으로 쓴 숫자 이미지를 분류하는 데이터입니다. 유명한 MNIST의 축소 버전으로, 8x8 픽셀의 작은 이미지 1,797개가 포함되어 있습니다.

이미지 분류와 딥러닝 입문에 많이 사용됩니다.

다음 코드를 살펴봅시다.

from sklearn.datasets import load_digits
import matplotlib.pyplot as plt

# Digits 데이터셋 로드
digits = load_digits()

# 기본 정보 확인
print("데이터 형태:", digits.data.shape)
print("이미지 형태:", digits.images.shape)
print("타겟 종류:", digits.target_names)

# 첫 번째 이미지 확인
print(f"\n첫 번째 샘플의 정답: {digits.target[0]}")

# 이미지 시각화 (4개 샘플)
fig, axes = plt.subplots(1, 4, figsize=(10, 3))
for i, ax in enumerate(axes):
    ax.imshow(digits.images[i], cmap='gray')
    ax.set_title(f'Label: {digits.target[i]}')
    ax.axis('off')
plt.show()

"혹시 MNIST라고 들어보셨어요?" 박시니어 씨의 질문에 김개발 씨가 고개를 끄덕였습니다. "딥러닝 책에서 본 것 같아요.

손글씨 인식하는 거 맞죠?" MNIST는 머신러닝 역사상 가장 유명한 데이터셋 중 하나입니다. 28x28 픽셀의 손글씨 숫자 이미지 70,000개가 담겨 있죠.

하지만 크기가 커서 간단한 실습에는 부담스러울 수 있습니다. 그래서 Scikit-learn은 Digits라는 축소 버전을 제공합니다.

마치 대용량 영화를 스마트폰용으로 압축한 것처럼, MNIST의 핵심은 그대로 유지하면서 크기만 줄인 것입니다. Digits 데이터셋의 이미지는 8x8 픽셀로 매우 작습니다.

총 1,797개의 샘플이 있고, 각 픽셀은 0부터 16까지의 밝기 값을 가집니다. 0에 가까울수록 흰색, 16에 가까울수록 검은색입니다.

코드에서 특이한 점은 digits.datadigits.images 두 가지 형태로 데이터에 접근할 수 있다는 것입니다. data는 64개(8x8)의 특성을 일렬로 펼친 1차원 배열이고, images는 8x8의 2차원 배열 형태를 유지하고 있습니다.

머신러닝 알고리즘은 보통 1차원 입력을 받으므로 digits.data를 사용합니다. 반면 이미지를 시각화하거나 CNN 같은 딥러닝 모델에 넣을 때는 digits.images가 편리합니다.

matplotlib을 사용하면 손글씨 이미지를 직접 눈으로 확인할 수 있습니다. imshow() 함수에 이미지 배열을 넣으면 화면에 표시됩니다.

cmap='gray'를 지정하면 흑백으로 보여줍니다. 김개발 씨가 이미지를 확인하며 말했습니다.

"오, 진짜 사람이 쓴 것 같네요. 근데 8x8이라 좀 흐릿하긴 해요." 박시니어 씨가 웃으며 답했습니다.

"그래도 분류하기엔 충분해요. 오히려 이 정도 크기가 빠르게 여러 알고리즘을 테스트해보기에 좋죠." 실제로 Digits 데이터셋으로 SVM, 랜덤 포레스트, 신경망 등 다양한 알고리즘의 성능을 비교해볼 수 있습니다.

이미지 분류의 기본 개념을 익히기에 안성맞춤입니다.

실전 팁

💡 - 본격적인 딥러닝 실습에는 tensorflow나 pytorch의 MNIST를 사용하세요

  • digits.images[n]으로 n번째 샘플을 2차원 이미지로 바로 접근할 수 있습니다

5. 데이터셋 구조 이해하기

"자, 이제 데이터셋의 내부 구조를 자세히 살펴볼까요?" 박시니어 씨가 말했습니다. 김개발 씨는 지금까지 data와 target만 사용했는데, 데이터셋 객체에 다른 속성들도 있다는 것이 궁금해졌습니다.

Scikit-learn의 데이터셋 객체는 Bunch라는 특별한 딕셔너리 형태입니다. data, target 외에도 feature_names, target_names, DESCR 등 다양한 메타 정보를 담고 있습니다.

이 구조를 이해하면 데이터를 더 효과적으로 활용할 수 있습니다.

다음 코드를 살펴봅시다.

from sklearn.datasets import load_iris

# 데이터셋 로드
iris = load_iris()

# Bunch 객체의 모든 키 확인
print("데이터셋에 포함된 키:", iris.keys())

# 각 속성 살펴보기
print("\n[data] 형태:", iris.data.shape)
print("[target] 형태:", iris.target.shape)
print("[feature_names]:", iris.feature_names)
print("[target_names]:", iris.target_names)

# 데이터셋 설명 (앞부분만)
print("\n[DESCR] 데이터셋 설명:")
print(iris.DESCR[:500])

# DataFrame으로 변환하기
import pandas as pd
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['species'] = iris.target
print("\nDataFrame 형태:")
print(df.head())

박시니어 씨가 화이트보드에 그림을 그리기 시작했습니다. "Scikit-learn의 데이터셋은 단순한 배열이 아니에요.

Bunch라는 특별한 객체에 담겨 있죠." Bunch 객체는 딕셔너리처럼 동작하면서도 속성처럼 접근할 수 있는 편리한 자료구조입니다. 예를 들어 iris['data']로도, iris.data로도 같은 데이터에 접근할 수 있습니다.

keys() 메서드를 호출하면 데이터셋에 어떤 속성들이 있는지 한눈에 볼 수 있습니다. Iris 데이터셋의 경우 data, target, frame, target_names, DESCR, feature_names, filename 등이 포함되어 있습니다.

가장 중요한 것은 역시 datatarget입니다. data에는 입력 특성이, target에는 정답 레이블이 들어있습니다.

이 두 가지만 있으면 기본적인 머신러닝 모델을 학습시킬 수 있습니다. 하지만 다른 속성들도 유용하게 활용됩니다.

feature_names는 각 특성의 이름을 알려주고, target_names는 타겟 숫자가 실제로 무엇을 의미하는지 알려줍니다. 0, 1, 2라는 숫자보다 setosa, versicolor, virginica라는 이름이 훨씬 이해하기 쉽죠.

DESCR 속성은 데이터셋에 대한 상세한 설명문입니다. 데이터가 어디서 왔는지, 특성이 무엇을 의미하는지, 어떤 연구에 사용되었는지 등을 자세히 알 수 있습니다.

처음 보는 데이터셋을 다룰 때 반드시 읽어보는 것이 좋습니다. 김개발 씨가 질문했습니다.

"pandas DataFrame으로 변환하면 뭐가 좋은가요?" 박시니어 씨가 답했습니다. "데이터 탐색이 훨씬 편해져요.

통계 요약, 시각화, 필터링 같은 작업을 쉽게 할 수 있죠." 코드에서 보듯이, pd.DataFrame() 생성자에 iris.data를 넣고 columns 파라미터에 feature_names를 지정하면 깔끔한 표 형태로 변환됩니다. 여기에 target 열을 추가하면 완전한 분석용 데이터프레임이 완성됩니다.

실무에서는 이렇게 DataFrame으로 변환한 후 **df.describe()**로 통계 요약을 보거나, **df.corr()**로 상관관계를 분석하는 작업을 많이 합니다.

실전 팁

💡 - iris.DESCR을 출력하면 데이터 출처와 특성 설명을 확인할 수 있습니다

  • as_frame=True 옵션을 사용하면 바로 DataFrame으로 받을 수 있습니다

6. 커스텀 데이터 로드하기

스터디가 거의 끝나갈 무렵, 김개발 씨가 손을 들었습니다. "내장 데이터셋으로 연습은 했는데, 실제 업무에서는 제 데이터를 써야 하잖아요.

어떻게 해야 하나요?"

실무에서는 CSV, Excel 등 다양한 형식의 커스텀 데이터를 사용합니다. Scikit-learn은 pandas와 함께 사용하면 어떤 형식의 데이터도 쉽게 불러올 수 있습니다.

내장 데이터셋으로 익힌 구조를 그대로 적용하면 됩니다.

다음 코드를 살펴봅시다.

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

# CSV 파일에서 데이터 로드 (예시)
# df = pd.read_csv('my_data.csv')

# 예시: 직접 데이터 생성
df = pd.DataFrame({
    'feature1': np.random.randn(100),
    'feature2': np.random.randn(100),
    'feature3': np.random.randn(100),
    'target': np.random.randint(0, 2, 100)
})

# 특성(X)과 타겟(y) 분리 - 내장 데이터셋과 같은 구조
X = df[['feature1', 'feature2', 'feature3']].values  # data에 해당
y = df['target'].values  # target에 해당

# 훈련/테스트 세트 분할
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

print(f"훈련 세트: {X_train.shape}, 테스트 세트: {X_test.shape}")

박시니어 씨가 고개를 끄덕였습니다. "좋은 질문이에요.

사실 내장 데이터셋은 어디까지나 연습용이에요. 실제 프로젝트에서는 자신만의 데이터를 다뤄야 하죠." 실무에서 가장 흔한 데이터 형식은 CSV입니다.

엑셀에서 내보내기 할 수도 있고, 데이터베이스에서 추출할 수도 있습니다. pandas의 read_csv() 함수 하나면 어떤 CSV 파일이든 깔끔하게 불러올 수 있습니다.

핵심은 내장 데이터셋에서 배운 구조를 그대로 적용하는 것입니다. 내장 데이터셋의 data에 해당하는 것이 입력 특성 X이고, target에 해당하는 것이 정답 레이블 y입니다.

DataFrame에서 특성과 타겟을 분리하는 방법은 간단합니다. 타겟 열을 제외한 나머지 열을 X로, 타겟 열만 y로 추출하면 됩니다.

.values를 붙이면 numpy 배열로 변환되어 Scikit-learn 모델에 바로 사용할 수 있습니다. 여기서 중요한 것이 train_test_split 함수입니다.

모델을 학습시킬 훈련 데이터와 성능을 평가할 테스트 데이터를 분리해줍니다. test_size=0.2는 전체의 20%를 테스트용으로 떼어놓는다는 의미입니다.

random_state 파라미터는 데이터를 무작위로 섞을 때 사용하는 시드값입니다. 같은 값을 지정하면 코드를 여러 번 실행해도 항상 같은 방식으로 분할됩니다.

실험 재현성을 위해 꼭 설정하는 것이 좋습니다. 김개발 씨가 따라하며 말했습니다.

"아, 그러니까 내장 데이터셋으로 배운 패턴을 그대로 제 데이터에 적용하면 되는 거네요?" 박시니어 씨가 미소를 지었습니다. "정확해요.

iris.data와 iris.target 대신 X와 y를 사용하는 것만 다르고, 나머지는 완전히 똑같아요." 실무에서는 **df.dropna()**로 결측치를 처리하거나, **pd.get_dummies()**로 범주형 변수를 인코딩하는 전처리 작업이 추가됩니다. 하지만 기본 구조는 항상 동일합니다.

특성과 타겟을 분리하고, 훈련과 테스트로 나누는 것이죠. 스터디가 끝나고 김개발 씨는 뿌듯한 마음으로 자리에서 일어났습니다.

내장 데이터셋으로 기초를 다졌으니, 이제 자신만의 데이터로 진짜 프로젝트를 시작할 준비가 된 것 같았습니다.

실전 팁

💡 - CSV 외에도 read_excel(), read_json(), read_sql() 등 다양한 로드 함수가 있습니다

  • 데이터 전처리 후에는 항상 shape을 확인하여 의도대로 변환되었는지 검증하세요

이상으로 학습을 마칩니다. 위 내용을 직접 코드로 작성해보면서 익혀보세요!

#Python#Scikit-learn#Dataset#MachineLearning#DataScience#Machine Learning,Python

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.