본문 바로가기
통계/머신러닝

Python Pandas 실무 데이터 분석 : 머신러닝 기초 (Scikit Learn)

by 만슨 2024. 3. 22.

안녕하세요 이번시간에는 머신러닝에 대해서 가볍게 한 번 알아보겠습니다.

 

머신러닝이란 ? 

 

- 인공지능(AI)를 구현하는 방법 중 하나로 빅데이터를 기계 스스로가 분석(학습)하고, 분석한 내용을 통해 결론(수식)을 도출하는 기술이다.

 

이처럼 학습 결과로 얻어진 지능을 이용하여 분석하고 사용하는 기술을  '머신러닝(Machine Learning)' 이라고 합니다.

 

 - 머신러닝 핵심 3 요소

  1. 데이터 : 학습 목적에 맞는 데이터 셋 구축
  2. 알고리즘 : 학습 목적에 맞는 적절한 알고리즘 선택 ex) 선형 회귀분석 / 의사 결정 나무 / KNN / SVM .... 
  3. 하드웨어 : CPU / GPU

 - Scikit Learn

  •  파이썬에서 머신러닝을 할 수 있게 도와주는 라이브러리
  • 정형데이터를 처리하는 Pandas 와의 상호작용이 유연하다
  • 데이터 마이닝

 - Machine Learning 종류

  • 지도학습 (Supervised Learning) : 목표변수(Y)와 설명변수(X)간의 관계를 수식화 하여, 새로운 설명변수(X)에 대해 목표변수(Y)를 예측하거나 분류하는 기법
  • 비지도 학습 (Unsupervised Learning) : 설명변수(X)들 간의 관계/연관성등을 파악하여 비슷한 데이터끼리 군집화 / 연관성 있는 데이터를 묶는 기법
  • 강화 학습 (Reinforcement Learning) : 주어진 환경에서 자신이 한 행동에 대한 보상이 좋은 방향으로 학습하는 기법

 

데이터 마이닝

-  데이터로  패턴이나 규칙을 찾아 실무에 적용할 수 있는 insight를 발견하는 방법론

 

데이터 마이닝 문제해결 Process : KDD / SEMMA ...

 

  1. 데이터 준비 - Target(목표 변수) : 어떤 Y에 대해서 패턴을 찾겠는가 / X (feature 설명변수) : 제품명, 판매일자, 요일 ..
  2. 데이터 전처리 - 좋은 학습을 할 수 있는 환경을 만들어 주는 구간. 학습 / 평가 데이터를 나눠주고, 데이터를 다듬어주는 구간(결측치, 이상치 등의 처리)
  3. 데이터 학습 ( 모델을 만드는 것) - 학습데이터를 알고리즘(회귀분석, Tree, SVM등 ..) 을 이용하여 모델 도출
  4. 모델 평가 - 평가 데이터들로 모델 평가

 

보통 전체 데이터의 7~80% 데이터(학습 데이터)로 학습을 통해 모델을 얻고 남은 2~30% 데이터들(평가 데이터)로 모델을 평가 한다.

 

 

ex) 매출 정보 데이터를 통해 다음달에 매출액이 어떨지 예측 해보고 싶다 

-> 기존에 있던 매출액 데이터를 학습시켜 다음달에 매출이 어떻게 될 지 추측 하는 것

 

 

그럼 실제 데이터를 통해 연습을 해보겠습니다.

 


 

실제 데이터 활용 

 

위 데이터는 실제 마켓의 회원정보 데이터 이다.

 

회원번호가 키값으로 회원번호에 따라 데이터가 나열되어 있다.

 

오늘 해볼 예측은 회원의 Gold_member을 타겟(Y)으로 분석을 해보겠습니다.

 

 

1. 데이터 준비 및 가공 ( Pandas 사용)

  • Y (Target) : Gold_member  / X (feature) 설명변수

 

  • 변수선택 (feature Selection) - 변수 선택을 통해 불 필요한 데이터를 삭제하거나 처리해줌

 

 

  •     결측치(Missing Value) 처리 

isnull 함수 sum 함수를 사용하여 결측치를 확인 해주었다.

 

 

dropna 함수를 이용하여 결측치를 제거 해주었다.

 

 

  •  타겟변수 가공

먼저 Target 변수의 데이터를 확인해주자 

 

데이터는 범주형 자료로 수치형 데이터로 바꾸어 줘 보겠다

 

 

 

replace({'컬럼명' : 값, '컬럼명2' : 값 ,...}) replace 함수를 통해 변경

 

이처럼 가지고 있는 컬럼 중 범주형 데이터를 수치형으로 변환 시켜주는 '원핫 인코딩' 처리를  해주겠습니다 

 

원핫 인코딩(One-hot Encoding) : 단순히 수치형 데이터로만 바꾸게 되면 서로 간의 관계성이 생기기 때문에 서로 무관한 수로 변환 하여 위같은 문제를 막아주는 변환 법.

 

 

get_dummies 함수를 사용하여 원핫 인코딩을 해준후 X,Y 값 지정해주자

 


2. 데이터 전처리(분할 /  Sklearn

- 오늘 사용할 sklearn 기능 함수 

  • Model_selection - 데이터 분할
  • metrics - 데이터 평가
  • preprocessing - 스케일링
  • tree - 알고리즘 종류
  • 등등

 

2-1 . 데이터 분할

 

sklean 이라는 라이브러리 내에 model_selection 이라는 모듈의 train_test_split 이라는 함수를 가져온다는 의미

 

 

train_test_split gkatn - 데이터를 분할 해주는 함수 

 

데이터 분할이 적절하게 잘 된 것을 shape으로 확인해주었다.

 

2-2 . 학습

 

이제 학습 데이터 셋으로 학습을 시켜주자

우리는 의사결정나무(DecisionTree)를 사용 할 것이다 .

의사결정 나무란 ?
 if ~ else 처럼 특정 조건을 기준으로 True / False 로 나누어 분류 및 회귀를 진행하는 tree 구조의 분류 / 회귀 데이터 마이닝 기법

 

종속변수가 범주형 - DecisionTreeClassifier 으로 분류

종속변수가 연속형 - DecisionTreeRegression 으로 회귀

fit - 데이터를 입혀주는 함수 즉 학습을 시킴

 

즉 Tree라는 알고리즘에 의해서 넣어준 데이터셋에 맞게 분류 모델(수식)을 도출 해내었다.

 

 

2-3 . 모델 평가

 도출된 모델을 평가 해보겠습니다.

 

평가 종류 (학습과 일반화)

 

1. 학습 : 알고리즘이 모델을 얼마나  학습을 잘 시켰는가? -> X_train 데이터로 예측.

2. 일반화 : 새로운 데이터 가 들어올 때, 얼마나 좋은 성능을 나타내는가? -> X_test 데이터로 예측

 

 

평가 방법

기존에 모델 도출에 사용된 X_train 데이터와 X_test 데이터를 모델에 집어넣어 예측된 종속변수 값(컴퓨터에 의해 예측 된 값)을 얻어 기존의 종속변수 값과 비교해보겠습니다.

 

ex)

VIP(예측) 얻어진 모델에 데이터를 넣어줌

      ---------------------------------->
    predict 함수 사용으로 예측
VIP(예측)
0 0
1 0

 

classification_report 함수를 이용

 

위 결과를  분석해본 결과 학습은 잘 되었지만 새로운 데이터에 대한 일반화 능력은 떨어지는 것을 볼 수 있다.

-> 데이터 전처리가 잘못 되었을 경우, 맞지않는 알고리즘을 사용한 경우

 

 

참고 : [매일10분 데이터 분석] 파이썬 머신러닝 맛보기 1탄 (Scikit Learn 이해하기 ) #Python #파이썬 (youtube.com)

[매일10분 데이터 분석] 파이썬 머신러닝 맛보기 2탄 (Scikit Learn 사용해보기) #Python #파이썬 (youtube.com) 

[매일10분 데이터 분석] 파이썬 머신러닝 맛보기 3탄 ( 학습을 잘했는지 평가하기 ) #Python #파이썬 (youtube.com)