본문 바로가기

머신러닝 & 딥러닝 공부/호기심 기록

[머신러닝]sklearn 활용해서 Iris(붓꽃) 분류 모델 구현

반응형

안녕하세요~

27년차 진로탐색꾼 조녁입니다! 오늘은 눈이 와서 날이 춥네요! 다들 빙판길 조심하세요~

 

 

오늘은 가장 많이 사용되는 파이썬 머신러닝 라이브러리인 sklearn(사이킷런)을 이용해서 간단한 붗꽃 분류 모델을 구현해보겠습니다!

특별히 의사 결정 트리를 이용해서 모델을 구현해보겠습니다! 우선 머신러닝을 공부할 때 중요한 건 내가 어떤 방식으로 모델을 구현하는 지 익숙해 지는 것이므로 단계를 나눠서 주석처리 해주는 것이 중요합니다! 

[Decision Tree(의사 결정 트리)를 이용하여 Iris 품종 분류 모델 구현]

1.Import Libraries 

 

import sklearn

print(sklearn.__version__)    #내가 사용하는 sklearn의 버전을 확인해준다. 저는 colab notebook 사용해서 0.22.2.post1 가 나왔어요.

 

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from sklearn.datasets import load_iris

from sklearn.tree import DecisionTreeClassifier

from sklearn.model_selection import train_test_split

 

-> 사실 numpy 나 matplotlib은 사용안했지만 혹시모르니 저는 항상 다 import 합니다! 그외에는 sklearn에서 바로 불러올 수 있는 붓꽃데이터와 의사결정 트리, 그리고 후에 모델을 생성할 떄 쓰일 라이브러리를 import해줍니다.

 

Iris(붓꽃) 품종 분류 모델 만들기

2. Iris dataset load & check data 

 

iris = load_iris()

 

iris_data = iris.data

iris_label = iris.target

 

print('iris target value:',iris_label)

print('iris target name:',iris.target_names)

 

-> 위와 같이 iris에서 data 값과 target(정답)값을 불러온다.

 

df_iris = pd.DataFrame(data=iris_data,columns=iris.feature_names)

df_iris['label'] = iris.target

df_iris.head(3)

-> df_iris 라는 객체에 iris data를 iris의 feature name을 column name으로 가지는 dataframe으로 지정합니다. 거기에다가 target 값을 'label'을 column name으로 갖는 열을 추가해줍니다. 그 후 상단 3개만 확인

 

3. Iris dataset 분할(학습/테스트)

x_train,x_test,y_train,y_test = train_test_split(iris_data,iris_label,test_size=0.2,random_state=11)

 

-> x_train,x_test,y_train,y_test 순서 기억하자. 여기서 전체 data를 분할하는 이유는 train:test = 8:2로 나눠서 학습과 테스트를 진행하고자 하는 것이다. 그래서 맨 앞에서 train_test_split 함수를 불러온 것!

 

4.Decision Tree 모델 객체 생성

df_clf = DecisionTreeClassifier(random_state=11)

 

-> random state 란 ? 

: random 하게 불러올 때 random state를 지정함으로써 리플레이가 가능하게 하는 것이라고 이해하면 된다.

예를 들어 1~100의 값을 랜덤으로 5개 불러서 43 ,2 ,23 ,57 , 90 을 불러왔다고 할때, random state를 지정한 체 불러오면 다음에도 같은 순서로 5개를 불러온다. (근데 여기선 별로 중요하지 않다고 한다. 관습적으로 하나 정해서 불러오면 될 듯?!)

 

5.Decision Tree 모델 객체 학습

df_clf.fit(x_train,y_train)

 

6.test data를 이용한 예측

pred = df_clf.predict(x_test)

 

7.Accuracy(정확도)를 통한 성능평가

from sklearn.metrics import accuracy_score

print(f'accuracy score:{accuracy_score(y_test,pred)}')

 

-> 사실상 복잡한 수식없이 sklearn 에 내장된 함수들을 활용하여 모든 것을 계산할 수 있었다.

 

총 정확도 0.9333..으로 분류할 수 있음을 확인할 수 있다. data의 값도 작고 feature name 도 작았기에 간단한 문제였지만 그래도 기본적으로 사이킷런에서 의사 결정 트리를 활용하여 값을 예측해볼 수 있었다.

 

https://link.coupang.com/a/rGNew\

 

[한빛미디어]혼자 공부하는 머신러닝 + 딥러닝 : 1:1 과외하듯 배우는 인공지능 자습서

COUPANG

www.coupang.com

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

반응형