반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석, 머신러닝 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

<머신러닝 관련 지난 글>

 

2021.07.19 - [파이썬 패키지/데이터분석] - [코딩유치원] 비전공자도 쉽게 이해할 수 있는 인공지능/머신러닝/딥러닝 개념 총정리

 

2021.09.01 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_1편. 머신러닝과 Scikit-learn 소개(ft. 지도학습, 비지도학습, 강화학습)

2021.09.07 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_2편. Scikit-learn 학습용 데이터 셋 불러오기(ft. 붓꽃 데이터)

2021.09.11 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_3편. 머신러닝 준비물! 학습/검증/예측 데이터(ft.과대적합과 과소적합)

 

 

 

오늘은 지난 시간 준비한 학습 데이터와 검증 데이터를 이용해서, 붓꽃의 3가지 종류로 분류해보는 머신러닝을 실습해보겠습니다.

 

예측 개념도

 

참고로 오늘도 여전히 쥬피터 노트북 (저의 경우엔 VS code 위에서)을 개발환경으로 사용하였습니다.

 


 

지난 시간 내용 (데이터 분류)

 

먼저 지난 시간의 코드를 그대로 실행해보겠습니다.

 

# 붓꽃 데이터 로드 / 데이터 셋 분류와 관련된 모듈 import
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 붓꽃 데이터 셋 객체화
dataset = load_iris()

# feature는 붓꽃 특징 데이터, label은 붓꽃 종류 데이터
feature= dataset['data']
label = dataset['target']

 

 

훈련 데이터와 검증 데이터의 분류는 이번 시간에 다시 실행해보겠습니다. 지난 시간 설정하지 않았던 파라미터를 넣어줄 예정이거든요.

 

x_train, x_valid, y_train, y_valid = train_test_split(feature, label, test_size=0.2, shuffle=True, stratify=label)

 

<train_test_split 함수 / 하이퍼 파라미터 설명>

 

1) test_size: 0~1까지 검증 데이터의 비율을 설정 (0.2는 데이터 셋의 20%를 검증 데이터로 사용하겠다는 뜻)

 

2) shuffle: 데이터 셋을 분류할 때, 섞어서 랜덤으로 분류할지 설정 (True는 섞는 것, False는 섞지 않는 것)

 

3) stratify: 데이터 셋을 분류할 때, 클래스(붓꽃의 종류)를 골고루 뽑도록 설정 (파라미터의 인자로는 label 데이터를 입력해줌)

 

4) random_state: 정수를 인자로 가지며, 분류할 때마다 동일하게 분류할 수 있게 해주는 파라미터 (여기서는 사용하지 않았음)

 

 

머신러닝 맛보기 (붓꽃 종류 분류)

 

이번 시간의 메인 주제인 붓꽃 종류 분류를 해보겠습니다. 여기까지 완료하신다면 머신러닝이 이런거구나라는 느낌이 조금 오실거예요.

 

머신러닝의 지도학습에는 분류(Classification)와 회귀(Regression) 모델이 있다고 말씀드렸죠?

 

이번 시간에는 이 둘 중에, 분류를 해보도록 하겠습니다.

 

분류 알고리즘에는 다양한 것들이 있지만 오늘은 LogisticRegression을 사용할 예정입니다.

(다음에 자세히 설명드릴테니, 그냥 분류 알고리즘이라고 대충 이해하고 넘어가도록 하겠습니다)

 

 

개념은 다음과 같습니다.

 

1. 모델 선언 (scikit-learn에 내장된 분류 모델)

2. x_train 데이터와 y_train 데이터로 모델 학습 (머신러닝)

3. 학습된 모델에 x_valid 데이터 입력 --> 예측 데이터 따로 저장

4. y_valid(정답)와 예측한 데이터 비교 --> 정확도 측정

 

 

지금부터 하나씩 코드로 실행해 보겠습니다.

 

 

1. 모델 선언

 

먼저 관련 모듈을 불러온 다음, 모델을 선언해 줍니다. 

 

# LogisticRegression 알고리즘을 사용하기 위한 모듈 import
from sklearn.linear_model import LogisticRegression

# 모델 선언
model = LogisticRegression()

 

2. 모델 학습

 

훈련 데이터를 학습(fit)시키는 코드입니다. 아마도 이 코드는 앞으로 머신러닝을 계속하는 한, 엄청 우려먹을 것 같네요!

 

model.fit(x_train, y_train)

 

 

3. 예측(분류) 수행

 

위에서 학습시킨 모델에 검증 데이터를 넣고, 그 결과를 y_predict라는 변수에 넣어줍니다.

 

y_predict = model.predict(x_valid)

 

y_predict에는 120개의 붓꽃 데이터 종류(0, 1, 2)가 들어가 있을 것입니다.

 

 

4. 예측 결과 검증

 

검증 컨셉은 간단합니다. 예측값(y_predict)과 정답(y_valid)을 비교해서 맞으면 True(1), 틀리면 False(0)이 나오겠죠?

 

120개의 0과 1이 나올 것이고, 이들의 평균을 구하면 그것이 예측의 정확도가 되는 것입니다.

 

코드로 구현하면 아래와 같습니다.

 

(y_predict == y_valid).mean()

 

저는 결과가 1.0으로 나왔네요. 코드 몇 줄로 100% 정확도의 머신러닝을 구현하다니 참 놀라운 세상이네요!

 

scikit-learn으로 머신러닝을 구현하는 일은 오늘 배운 내용에서 모델의 종류만 달라질뿐 모두 이런 방식을 따릅니다.

 

단, 모델마다 하이퍼 파라미터가 다르고, 이 하이퍼 파라미터를 적절하게 설정해주는 것이 머신러닝 정확도의 핵심입니다.

 

오늘 준비한 내용은 여기까지입니다.

 

오늘도 코딩유치원을 찾아주신 여러분들께 진심으로 감사드립니다.

 


 

<참고 자료>

 

1. 테디노트 블로그_scikit-learn 데이터 셋(dataset) 다루기

https://teddylee777.github.io/scikit-learn/scikit-learn-dataset

 

 

2. 패스트 캠퍼스 유료강의_직장인을 위한 파이썬 데이터 분석

 


이 글이 도움이 되셨다면, 아래의 광고를 한 번씩만 눌러주시면 너무너무 감사하겠습니다!

반응형

+ Recent posts