[ML] scikit-learn
개요
사이킷런(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%의 정확도를 보여준다.
"""
붓꽃 데이터 분류 프로세스
- 데이터 세트 분리
- 모델 학습
- 예측 수행
- 모델 평가