#14 사이킷런 소개, 첫번째 머신러닝 app - 붓꽃 품종 예측

박수경·2021년 10월 11일
0

Machine Learning

목록 보기
15/18

사이킷런

  • 파이썬 기반의 다른 머신러닝 패키지도 사이킷런 스타일의 API를 지향할 정도로 쉽고 가장 파이썬스러운 API를 제공.
  • 머신러닝을 위한 매우 다양한 알고리즘과 개발을 위한 편리한 프레임워크와 API를 제공.
  • 오랜 기간 실전 환경에서 검증됐으며, 매우 많은 환경에서 사용되는 성숙한 라이브러리.
  • 주로 Numpy와 Scipy 기반 위에서 구축된 라이브러리.

머신러닝을 위한 용어 정리

  • 피처(Feature), 속성
    • 피처는 데이터 세트의 일반 속성.
    • 머신러닝은 2차원 이상의 다차원 데이터에서도 많이 사용되므로 타겟값을 제외한 나머지 속성을 모두 피처로 지칭.
  • 레이블, 클래스, 타겟(값), 결정(값)
    • 타겟값 또는 결정값은 지도 학습 시 데이터의 학습을 위해 주어지는 정답 데이터.
    • 지도 학습 중 분류의 경우에는 이 결정값을 레이블 또는 클래스로 지칭.

지도학습 - 분류(Classification)

  • 대표적인 지도학습(Supervised Learning) 방법의 하나.
  • 지도학습은 학습을 위한 다양한 피처와 분류 결정값인 레이블(Label) 데이터로 모델을 학습한 뒤, 별도의 테스트 데이터 세트에서 미지의 레이블을 예측.
  • 즉 명확한 정답이 주어진 데이터를 먼저 학습한 뒤 미지의 정답을 예측하는 방식.
  • 학습을 위해 주어진 데이터 세트 = 학습 데이터 세트
  • 머신러닝 모델의 예측 성능을 평가하기 위해 별도로 주어진 데이터 세트 = 테스트 데이터 세트

붓꽃 데이터 분류 예측 프로세스

  1. 데이터 세트 분리: 데이터를 학습 데이터와 테스트 데이터로 분리.
  2. 모델 학습: 학습 데이터를 기반으로 ML 알고리즘을 적용해 모델을 학습.
  3. 예측 수행: 학습된 ML 모델을 이용해 테스트 데이터의 분류(즉 붓꽃 종류)를 예측.
  4. 평가: 예측된 결과값과 테스트 데이터의 실제 결과값을 비교해 ML 모델 성능을 평가.
# 사이킷런 버전 확인
import sklearn
print(sklearn.__version__)

# 필요한 모듈 로딩
from sklearn.datasets import load_iris # iris 내장 데이터 셋을 불러옴
from sklearn.tree import DecisionTreeClassifier # 결정트리 클래스타입
from sklearn.model_selection import train_test_split # 학습데이터와 테스트 데이터를 분리하는.

import pandas as pd

# 붓꽃 데이터 세트를 로딩합니다. 
iris = load_iris()

# iris.data는 Iris 데이터 세트에서 피처(feature)만으로 된 데이터를 numpy로 가지고 있습니다. 
iris_data = iris.data

# iris.target은 붓꽃 데이터 세트에서 레이블(결정 값) 데이터를 numpy로 가지고 있습니다. 
iris_label = iris.target
print('iris target값:', iris_label)
print('iris target명:', iris.target_names)

# 붓꽃 데이터 세트를 자세히 보기 위해 DataFrame으로 변환합니다. 
iris_df = pd.DataFrame(data=iris_data, columns=iris.feature_names)
iris_df['label'] = iris.target
iris_df.head(3)

# 학습데이터와 테스트데이터로 분리
X_train, X_test, y_train, y_test = train_test_split(iris_data, iris_label, 
                                                    test_size=0.2, random_state=11)

# DecisionTreeClassifier 객체 생성 
dt_clf = DecisionTreeClassifier(random_state=11)

# 학습 수행 
dt_clf.fit(X_train, y_train)

# 학습이 완료된 DecisionTreeClassifier 객체에서 테스트 데이터 세트로 예측 수행. 
pred = dt_clf.predict(X_test)
pred

from sklearn.metrics import accuracy_score
print('예측 정확도: {0:.4f}'.format(accuracy_score(y_test,pred)))

profile
유니콘을 위하여

0개의 댓글