소개
이 실습에서는 scikit-learn 에서 다중 클래스 및 다중 출력 알고리즘의 기능과 사용법을 탐색합니다. 다중 클래스 분류는 샘플을 두 개 이상의 클래스에 할당하는 분류 작업입니다. 반면에 다중 출력 분류는 각 샘플에 대한 여러 속성을 예측합니다. 다음 주제를 다룰 것입니다.
- 다중 클래스 분류
- 다중 레이블 분류
- 다중 클래스 - 다중 출력 분류
- 다중 출력 회귀
VM 팁
VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근합니다.
때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.
학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.
다중 클래스 분류
문제 설명
다중 클래스 분류는 두 개 이상의 클래스가 있는 분류 작업입니다. 각 샘플은 하나의 클래스에만 할당됩니다.
대상 형식
다중 클래스 대상의 유효한 표현은 두 개 이상의 이산 값을 포함하는 1 차원 또는 열 벡터입니다.
예제
붓꽃 데이터셋을 사용하여 다중 클래스 분류를 보여줍니다.
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.multiclass import OneVsRestClassifier
## 붓꽃 데이터셋 로드
X, y = datasets.load_iris(return_X_y=True)
## OneVsRestClassifier 를 사용하여 로지스틱 회귀 모델 학습
model = OneVsRestClassifier(LogisticRegression())
model.fit(X, y)
## 예측 수행
predictions = model.predict(X)
print(predictions)
다중 레이블 분류
문제 설명
다중 레이블 분류는 각 샘플이 여러 레이블을 가질 수 있는 분류 작업입니다. 각 샘플이 가질 수 있는 레이블의 수는 두 개보다 큽니다.
대상 형식
다중 레이블 대상의 유효한 표현은 이진 행렬입니다. 각 행은 샘플을, 각 열은 클래스를 나타냅니다. 값 1 은 샘플에 레이블이 존재함을 나타내고, 0 또는 -1 은 존재하지 않음을 나타냅니다.
예제
make_classification 함수를 사용하여 다중 레이블 분류 문제를 생성해 보겠습니다.
from sklearn.datasets import make_classification
from sklearn.multioutput import MultiOutputClassifier
from sklearn.ensemble import RandomForestClassifier
## 다중 레이블 분류 문제 생성
X, y = make_classification(n_samples=100, n_features=10, n_informative=5, random_state=0)
y = y.reshape(-1, 1)
## 다중 출력 랜덤 포레스트 분류기 학습
model = MultiOutputClassifier(RandomForestClassifier())
model.fit(X, y)
## 예측 수행
predictions = model.predict(X)
print(predictions)
다중 클래스 - 다중 출력 분류
문제 설명
다중 클래스 - 다중 출력 분류 (또는 다중 작업 분류) 는 각 샘플에 대한 여러 개의 이진이 아닌 속성을 예측하는 작업입니다. 각 속성은 두 개 이상의 클래스를 가질 수 있습니다.
대상 형식
다중 클래스 - 다중 출력 대상의 유효한 표현은 밀집 행렬입니다. 각 행은 샘플을, 각 열은 다른 속성 또는 클래스를 나타냅니다.
예제
make_classification 함수를 사용하여 다중 클래스 - 다중 출력 분류 문제를 생성해 보겠습니다.
from sklearn.datasets import make_classification
from sklearn.multioutput import MultiOutputClassifier
from sklearn.svm import SVC
## 다중 클래스 - 다중 출력 분류 문제 생성
X, y = make_classification(n_samples=100, n_features=10, n_informative=5, n_classes=3, random_state=0)
## 다중 출력 서포트 벡터 분류기 학습
model = MultiOutputClassifier(SVC())
model.fit(X, y)
## 예측 수행
predictions = model.predict(X)
print(predictions)
다중 출력 회귀
문제 설명
다중 출력 회귀는 각 샘플에 대한 여러 개의 수치 속성을 예측하는 작업입니다. 각 속성은 수치 변수이며, 속성의 개수는 두 개 이상일 수 있습니다.
대상 형식
다중 출력 회귀 대상의 유효한 표현은 밀집 행렬입니다. 각 행은 샘플을, 각 열은 다른 속성을 나타냅니다.
예제
make_regression 함수를 사용하여 다중 출력 회귀 문제를 생성해 보겠습니다.
from sklearn.datasets import make_regression
from sklearn.multioutput import MultiOutputRegressor
from sklearn.linear_model import LinearRegression
## 다중 출력 회귀 문제 생성
X, y = make_regression(n_samples=100, n_features=10, n_targets=3, random_state=0)
## 다중 출력 선형 회귀 모델 학습
model = MultiOutputRegressor(LinearRegression())
model.fit(X, y)
## 예측 수행
predictions = model.predict(X)
print(predictions)
요약
이 실습에서는 scikit-learn 의 다중 클래스 및 다중 출력 알고리즘을 탐색했습니다. 다중 클래스 분류, 다중 레이블 분류, 다중 클래스 - 다중 출력 분류, 그리고 다중 출력 회귀를 다루었습니다. 이러한 알고리즘은 여러 개의 대상이나 클래스를 가진 복잡한 분류 및 회귀 작업을 해결할 수 있도록 합니다.