[ML] scikit-learn

1 minute read

개요

사이킷런(scikit-learn)은 파이썬 머신러닝 라이브러리 중 가장 많이 사용되는 라이브러리입니다. 최근에는 텐서플로, 케라스 등 딥러닝 전문 라이브러리의 강세로 인해 대중적인 관심이 줄어들고는 있지만 여전히 많은 데이터 분석가가 의존하는 대표적인 파이썬 ML 라이브러리입니다.

사이킷런의 특징

  • 파이썬 기반의 다른 머신러닝 패키지도 사이킷런 스타일의 API를 지향할 정도로 쉽고 가장 파이썬스러운 API를 제공한다.

  • 머신러닝을 위한 매우 다양한 알고리즘과 개발을 위한 편리한 프레임워크와 API를 제공한다.

  • 오랜 기간 설정 환경에서 검증됐으며, 매우 많은 환경에서 사용하는 성숙한 라이브러리입니다.

붓꽃 품종 예측하는 머신러닝 모델 만들기.

사이킷런의 모듈 확인하기

sklearn.datasets은 사이킷런에서 자체적으로 제공하는 데이터 세트를 생성하는 모듈의 모임이다.

sklearn.tree 내의 모듈은 트리 기반의 ML 알고리즘을 구현한 클래스 모임이다.

sklearn.model_selection은 학습 데이터와 검증 데이터, 예측 데이터로 데이터를 분리하거나 최적의 하이퍼 파라미터로 평가하기 위한 다양한 모듈의 모임이다.

sklearn.metrics는 머신러닝 알고리즘의 성능 평가 방법 모듈의 모임이다.

from sklearn.datasets import load_iris 
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split 
from sklearn.metrics import accuray_score
import pandas as pd 

# 붓꽃 데이터 세트 생성 
iris = load_iris()

"""
iris.data는 iris 데이터 세트에서 피처만으로 된 데이터를 numpy로 가지고 있다.
"""
iris_data = iris.data

"""
iris.target은 iris 데이터 세트에서 레이블(결정 값) 데이터를 
numpy로 가지고 있다. 
"""
iris_label = iris.target 

# 붓꽃 데이터 세트를 DataFrame로 변환 
iris_df = pd.DataFrame(data = iris_data, columns = iris.feature_names)
iris_df['label'] = iris.target 

# 데이터 분리 -> train & test 
X_train, X_test, y_train, y_test = train_test_split(iris_data,iris_label,test_size=0.2,random_state=11)

# DecisionTreeClassifier 객체 생성 - 분류를 위한 tree기반 머신러닝 알고리즘
dt_clf = DecisionTreeClassifier(random_state=11)

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

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

# 머신러닝 성능 평가 - 정확도(Accuracy)
print('예측 정확도: {0:.4f}'.format(accuracy_score(y_test,pred)))
#output: 예측 정확도: 0.9333

"""
93.33%의 정확도를 보여준다.
"""

붓꽃 데이터 분류 프로세스

  1. 데이터 세트 분리
  2. 모델 학습
  3. 예측 수행
  4. 모델 평가