LITTLE BY LITTLE

[1] 파이썬 머신러닝 완벽가이드 - 넘파이(~팬시인덱싱), 사이킷런(~붓꽃 품종 예측) 본문

데이터 분석/파이썬 머신러닝 완벽가이드

[1] 파이썬 머신러닝 완벽가이드 - 넘파이(~팬시인덱싱), 사이킷런(~붓꽃 품종 예측)

위나 2022. 7. 25. 22:23

*목차

  1. 파이썬 기반의 머신러닝과 생태계 이해
    1. 머신러닝의 개념
    2. 주요 패키지
    3. 넘파이
    4. 판다스 (데이터 핸들링)
    5. 정리
  2. 사이킷런으로 시작하는 머신러닝(87p)
    1. 사이킷런 소개
    2. 첫번째 머신러닝 만들어보기 - 붓꽃 품종 예측
    3. 사이킷런 기반 프레임워크 익히기 ( fit(), predict() ..)
    4. Model selection 모듈 소개 (교차검증, GridSerachCV..)
    5. 데이터 전처리 
    6. 사이킷런으로 수행하는 타이타닉 생존자 예측
    7. 정리
  3. 평가
    1. 정확도
    2. 오차 행렬
    3. 정밀도와 재현율
    4. F1스코어
    5. ROC 곡선과 AUC
    6. 피마 인디언 당뇨병 예측
    7. 정리
  4. 분류
    1. 분류의 개요
    2. 결정 트리
    3. 앙상블 학습
    4. 랜덤 포레스트
    5. GBM(Gradient Boosting Machine)
    6. XGBoost(eXtra Gradient Boost)
    7. LightGBM
    8. 분류 실습 - 캐글 산탄데르 고객 만족 예측
    9. 분류 실습 - 캐글 신용카드 사기 검출
    10. 스태킹 앙상블
    11. 정리
  5. 회귀
    1. 회귀 소개
    2. 단순 선형 회귀를 통한 회귀 이해
    3. 비용 최소화하기 - 경사 하강법 (Gradient Descent) 소개
    4. 사이킷런 Linear Regression을 이용한 보스턴 주택 가격 예측
    5. 다항 회귀와 과(대)적합/과소적합 이해
    6. 규제 선형 모델 - 릿지, 라쏘, 엘라스틱 넷
    7. 로지스틱 회귀
    8. 회귀 트리
    9. 회귀 실습 - 자전거 대여 수요 예측
    10. 회귀 실습 - 캐글 주택 가격 : 고급 회귀 기법
    11. 정리
  6. 차원 축소 
    1. 차원 축소의 개요
    2. PCA (Principal Component Anlysis)
    3. LDA (Linear Discriminant Anlysis)
    4. SVD (Singular Value Decomposition)
    5. NMF (Non-Negative Matrix Factorization)
    6. 정리
  7. 군집화
    1. K-평균 알고리즘 이해
    2. 군집 평가
    3. 평균 이동 (Mean shift)
    4. GMM(Gaussian Mixture Model)
    5. DBSCAN
    6. 군집화 실습 - 고객 세그먼테이션
    7. 정리
  8. 텍스트 분석
    1. 텍스트 분석 이해
    2. 텍스트 사전 준비 작업(텍스트 전처리) - 텍스트 정규화
    3. Bag of Words - BOW
    4. 텍스트 분류 실습 - 20 뉴스그룹 분류
    5. 감성 분석
    6. 토픽 모델링 - 20 뉴스그룹
    7. 문서 군집화 소개와 실습 (Opinion Review 데이터셋)
    8. 문서 유사도
    9. 한글 텍스트 처리 - 네이버 영화 평점 감성 분석
    10. 텍스트 분석 실습 - 캐글 mercari Price Suggestion Challenge
    11. 정리
  9. 추천 시스템
    1. 추천 시스템의 개요와 배경
    2. 콘텐츠 기반 필터링 추천 시스템
    3. 최근접 이웃 협업 필터링
    4. 잠재요인 협업 필터링
    5. 콘텐츠 기반 필터링 실습 - TMDV 5000 영화 데이터셋
    6. 아이템 기반 최근접 이웃 협업 필터링 실습
    7. 행렬 분해를 이용한 잠재요인 협업 필터링 실습
    8. 파이썬 추천 시스템 패키지 - Surprise
    9. 정리

* 주피터 노트북 단축키 

더보기
  • DD : 실행 취소
  • B : below에 셀 생성
  • A : above에 셀 생성
  • M : 셀타입 Markdown으로 바꾸기
  • Y : 셀타입 Code로 바꾸기

1. 파이썬 기반의 머신러닝과 생태계 이해

1-1. 머신러닝의 개념

1-2. 주요 패키지

1-3. 넘파이

np.array()

adarray로 변환해서 반환

 

ndarray.shape()

차원과 크기를 튜플 형태로 반환

 

  • shape에서 (3,)과 (2,3)의 차이를 이해해야한다.
    • 머신러닝 알고리즘과 데이터 셋 간의 입출력과 변환 수행시 명확히 1차원 데이터 혹은 다차원 데이터를 요구하는 경우가 있기에, 데이터 값이 동일해도 차원이 달라 오류가 발생하는 경우가 생기기 때문
  • 데이터 타입을 변경하는 경우는 대용량 데이터의 ndarray를 만들 때 많은 메모리가 사용되는데, 메모리를 더 절약해야할 때 이용된다. 가령 int형으로 충분한 경우인데 데이터 타입이 float라면, int형으로 바꿔서 메모리 절약 가능
  • ndarray를 편하게 생성하는 arange, zeros, ones가 쓰이는 경우는 주로 테스트용으로 데이터를 만들거나 대규모의 데이터를 일괄적으로 초기화해야 할 경우에 사용된다.

arange, zeros, ones

  • default 함수 인자는 stop 값이며,0부터 stop 값인 10에서 _1을 더한 9까지의 연속 숫자 값으로 구성 된 1차원 ndarray를 만든다. 여기서는 stop값만 부여했으나 range와 유사하게 start 값도 부여 해 0이 아닌 다른 값부터 시작한 연속 값을 부여할 수도 있음
  • 함수 인자로 dtype을 정해주지 않으면 default 로 float64 형의 데이터로 ndarray를 채움

reshape()

  • reshape()를 실전에서 더욱 효율적으로 사용하는 경우는 인자로 -1 을 적용하는 경우
  • -1 을 인자로 사용하면 원래 ndarray와 호환되는 새로운 shape로 변환
    • array1 = np.arange(10)
    • array1.reshape( - 1, 5)
      • 로우 인자가 -1 , 칼럼 인자가 5이다. 이것은 array1과 호환될 수 있는 2차원 ndarray로 변환하되, 고정된 5개의 칼럼에 맞는 로우를 자동으로 새롭게 생성해 변환하라는 의미
      • 즉, 10개의 1차 원 데이터와 호환될 수 있는 고정된 5개 칼럼에 맞는 로우 개수는 2이므로 2 x 5의 2차원 ndarray로 변환하는 것
    • - 1 인자는 reshape( - 1,1)와 같은 형태로 자주 사용된다. reshape ( - 1,1 )은 원본 ndarray가 어떤 형태라도 2차원이고, 여러 개의 로우를 가지되 반드시 1개의 칼럼을 가진 ndarray로 변환됨을 보장

indexing

 


2. 사이킷런으로 시작하는 머신러닝

2-1. 사이킷런 소개

2-2. 첫번째 머신러닝 만들어보기 - 붓꽃 품종 예측하기

  • 분류 classification은 대표적인 지도학습 방법의 하나
    • 지도학습은 학습을 위한 다양한 feature와 분류 결정값인 레이블 데이터로 모델을 학습한 뒤, 별도의 테스트 데이터셋에서 미지의 레이블을 예측
    • 즉, 지도학습은 명확한 정답이 주어진 데이터를 먼저 학습한 뒤, 미지의 정답을 예측하는 방식
    • 주어진 데이터셋 = 학습 데이터 셋 / 머신러닝 모델 예측 성능 평가를 위한 데이터셋 = 테스트 데이터 셋
  • sklearn.tree 내의 모듈은 트리 기반 ML알고리즘을 구현한 클래스의 모임이다.
    • ML알고리즘은 의사결정트리(Decision Tree)알고리즘으로, 이를 구현한 DecisionTreeClassifier 적용
    • 학습데이터와 테스트데이터 분리는 train_test_split() 함수 사용
      • test_size 파라미터 입력값의 비율로 분할
      • ex. test_size=0.2로 설정하면, 테스트:학습 =2:8 비율
      • 함수의 1번째 파라미터는 data set
      • 함수의 2번째 파라미터는 전체 중 테스트 데이터의 비율 test_size
      • 함수의 3번째 파라미터는 random_state : 호출할 때마다 같은 학습/테스트 용 데이터셋을 생성하기 위해 주어지는 난수 발생 값
        • 지정안할시 수행할 때마다 다른 학습/테스트용 데이터가 만들어지게됨
        • seed와 같은 기능
  • iris 데이터셋
    • feature : sepal length / sepal width / petal width / petal lenngth
    • 레이블(결정값) : 0,1,2 (0은 setosa 품종 / 1은 versicolor 품종 / 2는 virginica 품종)
  • 예측 프로세스
    1. 데이터셋 분리
    2. 모델 학습 : 학습 데이터를 기반으로 ML 알고리즘을 적용해 모델을 학습시킴
      • DecisionTreeClassifier로 객체 생성
      • 생성된 객체의 fit() 메소드에 학습용 피처 데이터 속성과 결정값 데이터셋을 입력해 호출, 학습 수행
    3. 예측 수행 : 학습된 ML모델을 이용해 테스트 데이터의 분류 예측 
      • 객체.predict(test_set)
    4.  평가 : 예측된 결괏값과 테스트 데이터의 실제 결괏값을 비교해 ML 모델 성능 평가
      • accuracy_score(y_test,pred)

Comments