2024.12.09 붓꽃 데이터셋으로 공부하기

SMALL

 회귀와 분류의 차이점

  

구분회귀 모델분류 모델
목표 숫자(연속형 값) 예측 범주(클래스) 예측
출력 값 실수(예: 10.5, 23.7) 클래스(예: 0, 1 또는 '강아지')
예시 "이번 달 전기요금은 15,000원일 거야!" "이메일이 스팸일 확률은 80%야!"

 

 


1. 데이터셋 구조

붓꽃 데이터셋은 총 150개의 샘플과 4개의 특성(feature)을 가지고 있다.

(1) 특성(Feature)

각 샘플은 아래 4가지 속성으로 구성되고 모든 속성 값은 실수형이다.

  • 꽃받침 길이(sepal length) (단위: cm)
  • 꽃받침 너비(sepal width) (단위: cm)
  • 꽃잎 길이(petal length) (단위: cm)
  • 꽃잎 너비(petal width) (단위: cm)

(2) 클래스(Target)

세 가지 붓꽃 품종 중 하나로 분류됩니다:

  • Setosa
  • Versicolor
  • Virginica 

각 품종을 클래스라고 하고 개별 붓꽃의 품종은 레이블이라고 한다.

붓꽃의 데이터셋은 두 개의 넘파이 배열로 이루어져 있다.

하나는 데이터를 담고 있고 scikit-learn에서는 X로 표기한다.

다른 하나는 기대하는 출력을 가지고 있고 y로 표기한다.

 

배열 X는 특성들의 2차원 배열이므로 각 데이터 포인트는 행 하나로 나타나고, 각 특성은 열하나가 된다.

배열 y는 1차원 배열로 각 샘플의 클래스 레이블에 해당하는 0에서 2사이의 정수를 담고 있다.


2. 데이터셋의 구성

scikit-learn에서 제공하는 데이터셋 형태는 Bunch 객체로, 딕셔너리와 유사하다.

주요 키와 설명:

  • data: 특성 데이터(NumPy 배열)
  • target: 클래스 레이블(정수 배열)
  • feature_names: 특성 이름 목록
  • target_names: 클래스 이름 목록
  • DESCR: 데이터셋 설명
  • filename: 로컬 데이터 파일 경로

3. 데이터셋 예제

(1) 데이터 로드

from sklearn.datasets import load_iris 

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

# 데이터셋 키 확인 
print(iris.keys())

(2) 데이터 샘플 확인

print("특성 데이터 예시:\n", iris.data[:5])  # 상위 5개 샘플
print("클래스 레이블:\n", iris.target[:5])  # 상위 5개 타겟 값

(3) 데이터 요약

import pandas as pd

# Pandas 데이터프레임으로 변환
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target

print(df.head())  # 상위 5개 샘플 출력

 


4. 데이터셋 시각화 예시

 
import matplotlib.pyplot as plt
import seaborn as sns

sns.pairplot(df, hue='target', markers=['o', 's', 'D'])
plt.show()

X_train, X_test, y_train, y_test = train_test_split(
	iris_dataset['data'], iris_dataset['target'], random_state=0)
    
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)

print("테스트 세트의 정확도 : {:.2f}".format(knn.score(X_test, y_test)))

이 짧은 코드에 scikit-learn의 머신러닝 알고리즘들이 가진 핵심이 담겨 있다.

LIST