상세 컨텐츠

본문 제목

[국비지원무료교육][머신러닝] 파이썬- 머신러닝 첫 수업: 사이킷런(scikitlearn) 랜덤포레스트(RandomForest) 사용해보기

Python

by Sam_Park 2022. 3. 6. 18:07

본문

- 본 글은 스마트 인재개발원 서포터즈 활동으로 작성한 글입니다

 

https://unsplash.com/photos/zwd435-ewb4

 

Jump to contents!

11월 15일에 처음 시작한 빅데이터 개발자 과정에서,

3월 4일 금요일에 머신러닝 첫 수업을 시작.

여기까지 약 3개월 반이 걸렸다. 

 

되새기고 다져야 할 것도 많지만,

아직 지금은 이 머신러닝(Machine Learning)을 배울 때가 되었나 보다.

 

머신러닝이란,

간단하게는 기계가 스스로 학습하는 것을 말한다.(기계학습)

 

기존에는 사람이 규칙과 조건을 정해놓은 알고리즘을 입력하여 작동시킨 반면,

머신러닝은 수많은 문제와 답이 있는 데이터를 주고,

기계가 스스로 그 규칙을 정의하도록 하는 것이다. 

 

마치 사람이 처음 개념을 배우는 것처럼, 

 

아이가 실제 대상을 볼 때,

그 대상의 이름을 반복해서 설명해주면,

개념과 특징이 잡히듯

 

기계에도 수많은 데이터를 입력하고, (예시- 개 이미지[픽셀의 배열])

그 데이터의 답을 같이 입력하면, ( 예시 - 답 : 개 )

개 이미지 데이터들의 공통된 규칙을 학습하여 기계만의 개 이미지에 대한 규칙을 세우는 것이다.

강사님은 자신은 머신러닝의 정의를

"미래 데이터에 적용할 수 있는 규칙을 찾는 것." 이라고 내렸다고 하시면서

우리도 공부를 하면서 각자 정의를 내리게 되기를 바란다고 하였다.

 

 

 


 

첫 수업에서는 미스터리 사인(mystery sign(?))의 규칙을 찾는 것을 실습하였다.

 

미스터리 사인은 두 수 사이에 연산자(+-*/ ) 공간을 비워두고, 결과를 제시하였을 때,

중간에 무슨 연산들이 들어가는지 맞추는 게임이다. 

 

python jupyter notebook을 켜고 아래 사이킷런의 랜덤 포레스트 실습을 했다.

 

Scikit-learn 

random_forest = RandomForestRegressor()

random_forest.fit(문제 , )

random_forest.predict(값을 얻고 싶은데이터 )

 

1.먼저 샘플 데이터를 만들어 주었고, 

list1 = []
for i in range(1, 200):  # 첫 번째 숫자의 범위
for j in range(1, 200):  # 두 번째 숫자의 범위
result = (i + (i-j)) if i > j else( j +(j-i))  # 삼항연산자로 (큰 수 + 큰 수와의 차)를 결과로 입력
list1.append([i, j, result])

2. 판다스 라이브러리를 이용하여 데이터프레임 형태로 저장하였다. 

import pandas as pd
data1 = pd.DataFrame(list1, columns = ['N1', 'N2', 'Result'])  #list1 이라는 리스트를 각,[] 안에 칼럼 이름으로 데이터 프레임화함.

3. 랜덤포레스트에 사용하기 위해 문제와 답을 나누고, 

#문제와 답으로 slicing
x = data1.loc[ :, ['N1', 'N2']]
y = data1.loc[ :, 'Result']

4. 사이킷런에서 랜덤포레스트 임포트 rf 객체 생성, 모델 학습시키기(.fit())

from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor()
rf.fit(x, y)  # 모델 사용(학습)하기

5. 모델 예측하기

rf.predict([[2000, 1900]])  #학습한 모델을 바탕으로 입력된 문제 값에 대한 답을 예측하기
rf.predict([[200, 190]])

 

그러니까, 1-200까지의 값을 반복하여 총 40000 번의 내용으로 

(큰 수 + 큰 수와의 차) 의 케이스를 입력하였고,

컴퓨터는 이 공식은 모른채로 숫자의 관계만을 파악하였다. 

 

그 결과,

2000, 1900을 입력한 경우, 정답은 2100 이지만, 199.58 이 나왔고,

200, 190을 입력한 경우, 정답은 210 이지만, 207.71 이 나왔다...

 

이것은 import 한 함수 명에서 나와있듯이, RandomForestRegressor

회귀분석이 기준이어서 그런 것 같다.

보통 회귀분석이 상관관계, 영향을 끼치는 정도 관계분석에 주로 사용되는 것인데,

수학 연산 값을 맞추려고 하니 기대에 부응하지 않는 결과가 ㅜㅜ ... 

 


어쨌든 이 미스터리 사인은 맛보기로 한 것이고,

이제부터 본격적으로 사이킷런과 머신러닝의 내용에 대해 배울 예정이다.

어렵다고 하니 더 열심히 공부하고 복습하고 알아봐야겠다. 

 

우선 교재와, 사이킷런 영어 페이지를 참고하고, 다른 블로그들도 참고하자!

교재 : [파이썬 라이브러리를 활용한 머신러닝] - 한빛미디어

사이킷런 웹 페이지 : https://scikit-learn.org/stable/

 


 

- 스마트인재개발원 홈페이지 https://www.smhrd.or.kr/
- 스마트인재개발원 네이버블로그 https://blog.naver.com/jang0_0yw

 

스마트인재개발원

취업과 나를 IT다! 빅데이터, 인공지능, 프로그래밍 전문 취업연계교육기관

smhrd.or.kr

 

스마트인재개발원 : 네이버 블로그

빅데이터, 인공지능, 사물인터넷, SW 전문 취업연계 무료교육기관‍♀️ 교육은 무료로! 취업은 당당하게!

blog.naver.com

 

관련글 더보기

댓글 영역