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