붓꽃 데이터 세트로 붓꽃의 품종을 분류(Classification)하는 것입니다.
붓꽃 데이터 세트는 꽃잎의 길이와 너비, 꽃받침의 길이와 너비 피처(Feature)를 기반으로 꽃의 품종을 예측하기 위한 것입니다.
분류(Classification)는 대표적인 지도학습(Supervised Learning) 방법의 하나입니다. 지도학습은 학습을 위한 다양한 피처와 분류 결정값인 레이블(Label) 데이터로 모델을 학습한 뒤, 별도의 테스트 데이터 세트에서 미지의 레이블을 예측합니다.
즉, 지도학습은 명확한 정답이 주어진 데이터를 먼저 학습한 뒤 미지의 정답을 예측하는 방식입니다. 이 때 학습을 위해 주어진 데이터 세트를 학습 데이터 세트, 머신러닝 모델의 예측 성능을 평가하기 위해 별도로 주어진 데이터 세트를 테스트 세트로 지칭합니다.
먼저 붓꽃품종에 사용할 모듈을 임포트합니다.
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
import pandas as pd
from sklearn.metrics import accuracy_score
sklearn.datasets : scikit-learn 패키지에서 제공하는 데이터셋을 불러오는 모듈입니다. load_iris는 붓꽃 데이터셋을 불러오는 함수입니다.
sklearn.tree : scikit-learn 패키지에서 제공하는 의사결정트리 알고리즘을 구현한 모듈입니다.
DecisionTreeClassifier는 분류(Classification)를 위한 의사결정트리 모델을 생성하는 클래스입니다.
sklearn.model_selection : scikit-learn 패키지에서 제공하는 모델 선택 및 평가를 위한 도구를 모아놓은 모듈입니다. train_test_split은 데이터셋을 학습용 데이터와 테스트용 데이터로 분리하는 함수입니다.
pandas : 데이터를 다루기 위한 패키지로서, 데이터를 표 형태로 다루기 용이합니다. pd는 pandas를 import 한 후, pandas를 사용할 때 자주 사용하는 별칭입니다.
sklearn.metrics : scikit-learn 패키지에서 제공하는 모델 평가를 위한 도구를 모아놓은 모듈입니다. accuracy_score는 분류 모델의 예측 결과와 실제 결과를 비교하여 정확도를 계산하는 함수입니다.
붓꽃 데이터 관련 내용 확인
# 설명 .DESCR
print(load_iris().DESCR)
# iris 데이터불러오기
iris = load_iris()
# iris.keys()확인
iris.keys()
# 붓꽃의 품종
print('타깃의 이름:', iris['target_names'])
# 붓꽃의 특성
print('특성의 이름:\n', iris['feature_names'])
# iris 데이터프레임 변환
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
# label 데이터
iris_df['label'] = iris.target
iris_df.head(3)
학습용 데이터와 테스트용 데이터 분리
x_train, x_test, y_train, y_test = train_test_split(iris.data,
iris.target,
test_size=0.2,
random_state=11)
test_size를 통해 테스트용 데이터셋의 비율을 설정하며, random_state를 통해 난수 시드값을 설정합니다.
x_train, x_test, y_train, y_test는 각각 학습용 데이터셋의 feature 데이터, 테스트용 데이터셋의 feature 데이터, 학습용 데이터셋의 target 데이터, 테스트용 데이터셋의 target 데이터를 의미합니다.
즉, x_train은 학습용 데이터셋의 feature 데이터이고, y_train은 학습용 데이터셋의 target 데이터입니다. x_test는 테스트용 데이터셋의 feature 데이터이고, y_test는 테스트용 데이터셋의 target 데이터입니다. 이렇게 학습용 데이터셋과 테스트용 데이터셋을 분리하는 이유는 모델의 일반화 성능을 평가하기 위함입니다.
모델 학습
df_clf = DecisionTreeClassifier(random_state=11)
df_clf.fit(x_train, y_train)
pred = df_clf.predict(x_test)
print(f'예측정확도 : {accuracy_score(y_test, pred)}')
DecisionTreeClassifier는 scikit-learn 패키지에서 제공하는 의사결정나무(Decision Tree) 기반 분류 알고리즘으로, random_state를 통해 난수 시드값을 설정할 수 있습니다.
df_clf.fit(x_train, y_train) 코드는 학습용 데이터셋인 x_train과 y_train을 사용하여 모델을 학습시키는 코드입니다. fit 함수를 호출하여 모델을 학습시킵니다.
pred = df_clf.predict(x_test) 코드는 학습된 모델을 사용하여 테스트용 데이터셋 x_test의 붓꽃 품종을 예측하는 코드입니다. predict 함수를 호출하여 분류 모델의 예측 결과인 pred를 생성합니다.
마지막으로, accuracy_score(y_test, pred) 코드는 scikit-learn 패키지에서 제공하는 accuracy_score 함수를 사용하여 예측된 붓꽃 품종과 실제 붓꽃 품종을 비교하여 분류 모델의 정확도를 계산합니다. 이 정확도는 테스트용 데이터셋을 사용하여 모델의 성능을 평가하는 데 사용됩니다.
'머신러닝 및 딥러닝' 카테고리의 다른 글
머신러닝(Machine Learning) (1) | 2024.07.03 |
---|---|
교차검증 (0) | 2023.05.14 |
사이킷런(scikit-learn) 기반 프레임워크 익히기 (0) | 2023.05.09 |
댓글