Developer/IT 도서

실무로 통하는 ML 문제 해결 with 파이썬

cepiloth 2024. 5. 20. 15:41
728x90
반응형

책 소개


"현재 실무로 통하는 ML 문제 해결 with 파이썬"은 데이터 전처리부터 딥러닝 모델 구축까지의 과정을 포괄적으로 다루는 책입니다. 책에는 총 216개의 예제가 포함되어 있어, 다양한 실무 문제를 해결하는 데 필요한 구체적인 방법들을 제공합니다.

주요 내용 요약


  • 초반부 : 데이터 구조와 조작을 위한 다양한 라이브러리와 프레임워크를 소개합니다. 파이썬의 기본 자료구조와 Pandas, NumPy 등을 사용하여 데이터를 효과적으로 처리하는 방법을 배울 수 있습니다.
  • 텍스트 다루기 : 텍스트 데이터를 처리하는 방법을 설명합니다. KoNLPy와 Okt를 사용하여 텍스트를 분리하고 불용어를 제거하며 명사만 추출하는 과정이 포함되어 있습니다. TF-IDF를 활용한 단어 중요도 계산과 텍스트 벡터화를 통한 특성 행렬 생성 방법도 다룹니다.
#라이브러리를 임포트 합니다.
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import linear_kernel

#검색할 텍스트 데이터를 만듭니다.
text_data = np.array(['I love Brazil. Brizail!', 'Sweden is best', 'Germany beats both'])

#tf-idf 특성 행렬을 만듭니다.
tfidf = TfidfVectorizer()
tfidf_matrix = tfidf.fit_transform(text_data)

#검색 쿼리를 만들고 이를 tf-idf 벡터로 변환합니다.
text = "Brizail is the best"
vector = tfidf.transform([text])

# 입력 벡터와 다른 모든 벡터 사이의 코사인 유사도를 계산합니다.
cosine_similarities = linear_kernel(vector, tfidf_matrix).flatten()

# 가장 관련 있는 항목의 인덱스를 순서대로 정렬합니다.
related_docs_indices = cosine_similarities.argsort()[:-10:-1]

# 코사인 유사돌에 따라 입력 쿼리와 가장 비슷한 텍스트를 출력합니다.
print([(text_data[i], cosine_similarities[i]) for i in related_docs_indices])

각 장마다 예제를 제공해주어서 따라 하기 편합니다.

  • 감정 분석: transformers 라이브러리의 파이프라인을 이용하여 감정 분석을 수행하는 방법을 제시합니다.
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
  • 이미지 다루기  : NumPy와 OpenCV를 사용하여 이미지를 조작하는 방법을 설명합니다. 기본적인 이미지 처리 기술부터 haar 케스케이드 분류기를 활용한 얼굴 인식 방법까지 다룹니다.
  • 딥러닝: 전처리부터 딥러닝 모델 구축 및 평가까지의 과정을 상세히 다룹니다. 다양한 딥러닝 프레임워크와 함께 실습 예제가 포함되어 있어, 독자가 직접 코드를 실행하며 학습할 수 있습니다.
  • 모델 평가  : 정확도, 재현율, 정밀도, F1 Score, ROC, 혼동 행렬, MSE 등 다양한 평가지표를 소개하고, classification_report를 사용하여 평가 리포트를 작성하는 방법을 설명합니다.

< 책의 일부 내용 >

정리


  • 장점
    • 다양한 예제 : 책에 포함된 216개의 예제는 각기 다른 실무 문제를 해결하는 데 큰 도움이 됩니다. 예제를 통해 실제 문제를 어떻게 접근하고 해결할 수 있는지 배울 수 있습니다.
    • 포괄적인 내용 : 데이터 전처리부터 딥러닝까지 다양한 주제를 다루어, 머신러닝과 딥러닝의 전반적인 흐름을 이해하는 데 도움이 됩니다.
    • 실용성 실무에 바로 적용할 수 있는 구체적이고 실용적인 예제를 제공하여, 독자들이 실제 문제를 해결하는 데 필요한 지식을 습득할 수 있습니다.
  • 단점
    • 일부 챕터는 초보자에게 다소 어려울 수 있습니다. 특히 파이썬과 함께 NumPy와 OpenCV를 처음 접하는 사람들은 추가 학습이 필요할 수 있습니다.
  • 인상 깊은 부분 : KoNLPy와 Okt를 활용한 텍스트 처리 부분은 실제 프로젝트에서 시간을 절약할 수 있는 유용한 정보였습니다. 벡터 데이터베이스와 텍스트 벡터화에 대한 설명도 매우 유익했습니다.
  • 개인적인 의견 : 이 책을 미리 알았다면 텍스트 처리 프로젝트에서 많은 시간을 절약할 수 있었을 것입니다. 실무에서 자주 사용하는 기법들이 잘 정리되어 있어, 머신러닝과 데이터 과학에 관심이 있는 모든 분들께 추천하고 싶습니다.
  • 결론 : 종합적으로, "현재 실무로 통하는 ML 문제 해결 with 파이썬"은 파이썬을 활용한 머신러닝 문제 해결에 대한 포괄적이고 실용적인 안내서입니다. 실무에 바로 적용할 수 있는 내용이 많아, 머신러닝과 데이터 과학 분야에서 일하는 사람들에게 매우 유용할 것입니다.

 

책 소개


216개 레시피로 실전 머신러닝 문제를 쉽고 빠르게 해결하기

이 실용 가이드는 『파이썬을 활용한 머신러닝 쿡북』의 개정판으로, 현장에서 만날 수 있는 머신러닝 문제를 해결하는 데 도움이 될 200개 이상의 독립된 레시피를 제공한다. 파이썬과 판다스, 사이킷런을 포함한 라이브러리에 익숙하다면 데이터 로드부터 모델 훈련, 신경망 활용에 이르기까지 특정 문제를 해결할 수 있다. 이번 개정판의 각 레시피에는 토이 데이터셋으로 복사, 붙여넣기, 실행한 뒤 작동하는지 확인할 수 있는 코드가 포함되어 있다. 이때 사용 사례나 애플리케이션에 따라 이러한 레시피를 조정할 수 있다. 레시피에는 솔루션을 설명하고 유의미한 맥락을 제공하는 토론이 포함되어 있다. 이론과 개념을 넘어 실제 작동하는 머신러닝 애플리케이션을 구축하는 데 필요한 핵심을 배워보자.

목차


1장 벡터, 행렬, 배열
_1.0 소개
_1.1 벡터 만들기
_1.2 행렬 만들기
_1.3 희소 행렬 만들기
_1.4 넘파이 배열 사전 할당하기
_1.5 원소 선택하기
_1.6 행렬 정보 확인하기
_1.7 벡터화 연산 적용하기
_1.8 최댓값, 최솟값 찾기
_1.9 평균, 분산, 표준편차 계산하기
_1.10 배열 크기 바꾸기
_1.11 벡터나 행렬 전치하기
_1.12 행렬 펼치기
_1.13 행렬의 랭크 구하기
_1.14 행렬의 대각원소 추출하기
_1.15 행렬의 대각합 계산하기
_1.16 점곱 계산하기
_1.17 행렬 덧셈과 뺄셈
_1.18 행렬 곱셈
_1.19 역행렬
_1.20 난수 생성하기

더보기

2장 데이터 적재
_2.0 소개
_2.1 샘플 데이터셋 적재하기
_2.2 모의 데이터셋 만들기
_2.3 CSV 파일 적재하기
_2.4 엑셀 파일 적재하기
_2.5 JSON 파일 적재하기
_2.6 파케이 파일 적재하기
_2.7 아브로 파일 적재하기
_2.8 SQLite 데이터베이스로부터 적재하기
_2.9 원격 SQL 데이터베이스에 쿼리하기
_2.10 구글 시트에서 데이터 적재하기
_2.11 S3 버킷에서 데이터 적재하기
_2.12 비구조적인 데이터 적재하기

3장 데이터 랭글링
_3.0 소개
_3.1 데이터프레임 만들기
_3.2 데이터에 대한 정보 확인하기
_3.3 데이터프레임 슬라이싱하기
_3.4 조건에 따라 행 선택하기
_3.5 값 정렬하기
_3.6 값 치환하기
_3.7 열 이름 바꾸기
_3.8 최솟값, 최댓값, 합, 평균 계산 및 개수 세기
_3.9 고유한 값 찾기
_3.10 누락된 값 다루기
_3.11 열 삭제하기
_3.12 행 삭제하기
_3.13 중복된 행 삭제하기
_3.14 값에 따라 행을 그룹핑하기
_3.15 시간에 따라 행을 그룹핑하기
_3.16 연산 집계와 통계
_3.17 열 원소 순회하기
_3.18 모든 열 원소에 함수 적용하기
_3.19 그룹에 함수 적용하기
_3.20 데이터프레임 연결하기
_3.21 데이터프레임 병합하기

4장 수치형 데이터 다루기
_4.0 소개
_4.1 특성 스케일 바꾸기
_4.2 특성 표준화하기
_4.3 정규화하기
_4.4 다항 특성과 교차항 특성 생성하기
_4.5 특성 변환하기
_4.6 이상치 감지하기
_4.7 이상치 다루기
_4.8 특성 이산화하기
_4.9 군집으로 샘플을 그룹으로 묶기
_4.10 누락된 값을 가진 샘플 삭제하기
_4.11 누락된 값 채우기

5장 범주형 데이터 다루기
_5.0 소개
_5.1 순서가 없는 범주형 특성 인코딩하기
_5.2 순서가 있는 범주형 특성 인코딩하기
_5.3 특성 딕셔너리 인코딩하기
_5.4 누락된 클래스 값 대체하기
_5.5 불균형한 클래스 다루기

6장 텍스트 다루기
_6.0 소개
_6.1 텍스트 정제하기
_6.2 HTML 파싱과 정제하기
_6.3 구두점 삭제하기
_6.4 텍스트 토큰화하기
_6.5 불용어 삭제하기
_6.6 어간 추출하기
_6.7 품사 태깅하기
_6.8 개체명 인식 수행하기
_6.9 텍스트를 BoW로 인코딩하기
_6.10 단어 중요도에 가중치 부여하기
_6.11 텍스트 벡터를 사용해 검색 쿼리 텍스트의 유사도 계산하기
_6.12 감성 분석 분류기 사용하기

7장 날짜와 시간 다루기
_7.0 소개
_7.1 문자열을 날짜로 변환하기
_7.2 시간대 다루기
_7.3 날짜와 시간 선택하기
_7.4 날짜 데이터를 여러 특성으로 나누기
_7.5 날짜 간의 차이 계산하기
_7.6 요일 인코딩하기
_7.7 시차 특성 만들기
_7.8 이동 시간 윈도 사용하기
_7.9 시계열 데이터에서 누락된 값 다루기

8장 이미지 다루기
_8.0 소개
_8.1 이미지 로드하기
_8.2 이미지 저장하기
_8.3 이미지 크기 변경하기
_8.4 이미지 자르기
_8.5 이미지 흐리게 하기
_8.6 이미지 선명하게 하기
_8.7 대비 높이기
_8.8 색깔 구분하기
_8.9 이미지 이진화하기
_8.10 배경 제거하기
_8.11 윤곽선 감지하기
_8.12 모서리 감지하기
_8.13 머신러닝 특성 만들기
_8.14 컬러 히스토그램을 특성으로 인코딩하기
_8.15 사전 훈련된 임베딩을 특성으로 사용하기
_8.16 OpenCV로 객체 탐지하기
_8.17 파이토치로 이미지 분류하기

9장 특성 추출을 사용한 차원 축소
_9.0 소개
_9.1 주성분을 사용해 특성 줄이기
_9.2 선형적으로 구분되지 않은 데이터의 차원 축소하기
_9.3 클래스 분리를 최대화하여 특성 줄이기
_9.4 행렬 분해를 사용하여 특성 줄이기
_9.5 희소한 데이터의 특성 줄이기

10장 특성 선택을 사용한 차원 축소
_10.0 소개
_10.1 분산을 기준으로 수치 특성 선택하기
_10.2 분산을 기준으로 이진 특성 선택하기
_10.3 상관관계가 큰 특성 다루기
_10.4 분류 작업에 관련 없는 특성 삭제하기
_10.5 재귀적 특성 제거하기

11장 모델 평가
_11.0 소개
_11.1 교차검증 모델 만들기
_11.2 기본 회귀 모델 만들기
_11.3 기본 분류 모델 만들기
_11.4 이진 분류기의 예측 평가하기
_11.5 이진 분류기 임곗값 평가하기
_11.6 다중클래스 분류기 예측 평가하기
_11.7 분류기 성능 시각화하기
_11.8 회귀 모델 평가하기
_11.9 군집 모델 평가하기
_11.10 사용자 정의 평가 지표 만들기
_11.11 훈련 세트 크기에 따른 영향 시각화하기
_11.12 평가 지표 리포트 만들기
_11.13 하이퍼파라미터 값의 영향 시각화하기

12장 모델 선택
_12.0 소개
_12.1 완전 탐색을 사용해 최선의 모델 선택하기
_12.2 랜덤 탐색을 사용해 최선의 모델 선택하기
_12.3 여러 학습 알고리즘에서 최선의 모델 선택하기
_12.4 전처리와 함께 최선의 모델 선택하기
_12.5 병렬화로 모델 선택 속도 높이기
_12.6 알고리즘에 특화된 기법을 사용해 모델 선택 수행 속도 높이기
_12.7 모델 선택 후 성능 평가하기

13장 선형 회귀
_13.0 소개
_13.1 직선 학습하기
_13.2 교차 특성 다루기
_13.3 비선형 관계 학습하기
_13.4 규제로 분산 줄이기
_13.5 라소 회귀로 특성 줄이기

14장 트리와 랜덤 포레스트
_14.0 소개
_14.1 결정 트리 분류기 훈련하기
_14.2 결정 트리 회귀 훈련하기
_14.3 결정 트리 모델 시각화하기
_14.4 랜덤 포레스트 분류기 훈련하기
_14.5 랜덤 포레스트 회귀 훈련하기
_14.6 OOB 데이터로 랜덤 포레스트 평가하기
_14.7 랜덤 포레스트에서 중요한 특성 구분하기
_14.8 랜덤 포레스트에서 중요한 특성 선택하기
_14.9 불균형한 클래스 다루기
_14.10 트리 크기 제어하기
_14.11 부스팅을 사용해 성능 향상하기
_14.12 XGBoost 모델 훈련하기
_14.13 LightGBM으로 실시간 성능 향상하기

15장 k-최근접 이웃
_15.0 소개
_15.1 샘플의 최근접 이웃 찾기
_15.2 k-최근접 이웃 분류기 만들기
_15.3 최선의 이웃 개수 결정하기
_15.4 반지름 기반의 최근접 이웃 분류기 만들기
_15.5 근사 최근접 이웃 찾기
_15.6 근사 최근접 이웃 평가하기

16장 로지스틱 회귀
_16.0 소개
_16.1 이진 분류기 훈련하기
_16.2 다중 클래스 분류기 훈련하기
_16.3 규제로 분산 줄이기
_16.4 대용량 데이터에서 분류기 훈련하기
_16.5 불균형한 클래스 다루기

17장 서포트 벡터 머신
_17.0 소개
_17.1 선형 분류기 훈련하기
_17.2 커널을 사용해 선형적으로 구분되지 않는 클래스 다루기
_17.3 예측 확률 계산하기
_17.4 서포트 벡터 식별하기
_17.5 불균형한 클래스 다루기

18장 나이브 베이즈
_18.0 소개
_18.1 연속적인 특성으로 분류기 훈련하기
_18.2 이산적인 카운트 특성으로 분류기 훈련하기
_18.3 이진 특성으로 나이브 베이즈 분류기 훈련하기
_18.4 예측 확률 보정하기

19장 군집
_19.0 소개
_19.1 k-평균을 사용한 군집
_19.2 k-평균 군집 속도 향상하기
_19.3 평균이동을 사용한 군집
_19.4 DBSCAN을 사용한 군집
_19.5 계층적 병합을 사용한 군집

20장 파이토치 텐서
_20.0 소개
_20.1 텐서 만들기
_20.2 넘파이로 텐서 만들기
_20.3 희소 텐서 만들기
_20.4 텐서 원소 선택하기
_20.5 텐서 구조 파악하기
_20.6 원소에 연산 적용하기
_20.7 최댓값과 최솟값 찾기
_20.8 텐서 크기 바꾸기
_20.9 텐서 전치하기
_20.10 텐서 펼치기
_20.11 점곱 계산하기
_20.12 텐서 곱셈

21장 신경망
_21.0 소개
_21.1 파이토치 자동미분 사용하기
_21.2 신경망을 위해 데이터 전처리하기
_21.3 신경망 구성하기
_21.4 이진 분류기 훈련하기
_21.5 다중 분류기 훈련하기
_21.6 회귀 모델 훈련하기
_21.7 예측하기
_21.8 훈련 기록 시각화하기
_21.9 가중치 규제로 과대적합 줄이기
_21.10 조기 종료로 과대적합 줄이기
_21.11 드롭아웃으로 과대적합 줄이기
_21.12 모델 훈련 진행 과정 저장하기
_21.13 신경망 튜닝하기
_21.14 신경망 시각화하기

22장 비정형 데이터를 위한 신경망
_22.0 소개
_22.1 이미지 분류 신경망 훈련하기
_22.2 텍스트 분류 신경망 훈련하기
_22.3 이미지 분류를 위해 사전 훈련된 모델 미세 튜닝하기
_22.4 텍스트 분류를 위해 사전 훈련된 모델 미세 튜닝하기

23장 훈련 모델의 저장, 로딩, 서빙
_23.0 소개
_23.1 사이킷런 모델 저장하고 로드하기
_23.2 텐서플로 모델 저장하고 로드하기
_23.3 파이토치 모델 저장하고 로드하기
_23.4 사이킷런 모델 서빙하기
_23.5 텐서플로 모델 서빙하기
_23.6 셀던으로 파이토치 모델 서빙하기

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

728x90
반응형