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

 

 

그렇지 않아도 최근에 LLM과 연관된 스터디를 하고 있던 중에 만나게 된 반가운 책

"NLP와 LLM 실전가이드"

 

 

원서의 제목은 "Mastering NLP from Foundations to LLMs"인데,

한글로 번역하자면... '기초부터 LLM까지, 자연어 처리 완전 정복!' 정도로 될 것 같다 ^^

 

여기서 또 하나 주목해야할 이름이 보인다. "박조은"

데이터분석, Kaggle, Python 같은 것들을 공부하신 분들이라면 한 번쯤은 들어보셨을 이름 ^^

그래서인지 아래와 같이 동영상 강의도 유튜브로 계속 올려주고 계신다. 와우~

 

 

그리고, 실습을 위한 노트북 파일도 새롭게 손봐서 따로 올려주셨다.

- https://github.com/corazzon/Mastering-NLP-from-Foundations-to-LLMs

 

 

원래 제공하는 실습 파일과 비교해보는 것도 재미(?)가 있을 수 있다.

 

 

위에서 볼 수 있는 원서의 표지 그림을 보면 알겠지만

이 책의 본질은 NLP(자연어 처리) 책이다.

그 기반이 되는 수학적인 요소들을 포함해 LLM까지 언급하고 있는 것이다.

 

 

책에서는 "대상 독자"를 아래와 같이 말하고 있다.

 

 

내가 생각했을 때에는 "NLP(자연어 처리)와 관련된 전체적인 내용을 훑어보고 싶은 사람"이라고 말해야 하지 않나 싶다.

 

이 책의 목차는 다음과 같다.

 

CHAPTER   1   자연어 처리 개요 살펴보기
CHAPTER   2   머신러닝과 자연어 처리를 위한 선형대수, 확률, 통계 마스터하기
CHAPTER   3   자연어 처리에서 머신러닝 잠재력 발휘하기
CHAPTER   4   자연어 처리 성능을 위한 텍스트 전처리 과정 최적화
CHAPTER   5   텍스트 분류 강화: 전통적인 머신러닝 기법 활용하기
CHAPTER   6   텍스트 분류의 재해석: 딥러닝 언어 모델 깊게 탐구하기
CHAPTER   7   대규모 언어 모델 이해하기
CHAPTER   8   대규모 언어 모델의 잠재력을 끌어내는 RAG 활용 방법
CHAPTER   9   대규모 언어 모델이 주도하는 고급 응용 프로그램 및 혁신의 최전선
CHAPTER 10   대규모 언어 모델과 인공지능이 주도하는 과거, 현재, 미래 트렌드 분석
CHAPTER 11   세계적 전문가들이 바라본 산업의 현재와 미래

 

전체 목차와 함께 이 책의 쪽수 424쪽인 것을 보면 알겠지만

"기초 수학부터 실전 AI 문제 해결까지" 살펴볼 수 있는 책인 것은 맞지만

깊이 있게까지 살펴보려면 다른 자료들을 더 많이 찾아봐야할 것이다.

 

기초 수학부터 언급한다고 하여 좋아할 사람도 있고, 싫어할 사람도 있을텐데....

그냥 말 그대로 한 번 쭉 훑어보고 지나가는 수준의 수학이기 때문에

너무 큰 기대도 너무 큰 걱정도 할 필요는 없을 것 같다.


이 책은 원서 제목 그대로가 딱 적당한 제목인 것 같다.

 

"Mastering NLP from Foundations to LLMs"

(기초부터 LLM까지, 자연어 처리 완전 정복!)

반응형

Windows 환경에서 NVIDIA 그래픽카드의 드라이버 및

AI 공부를 위한 CUDA, cuDNN을 설치하는 과정을 알아보고자 한다.

 

① 그래픽 카드 확인

GPU-Z 유틸리티를 활용해 내가 갖고 있는 그래픽카드를 확인해보자.

- https://www.whatwant.com/entry/GPU-Z

 

 

② 드라이버 설치

확인한 정보를 바탕으로 나에게 적합한 드라이버를 선택해서 설치해보자.

https://www.nvidia.com/ko-kr/drivers/

 

 

다운로드 받아서 잘 설치 진행하면 된다.

 

 

 

③ PyTorch 확인

CUDA 등이 필요한 이유는 AI 관련된 뭔가를 실습해보기 위해서일테고,

그 중 가장 대표적인 라이브러리가 바로 PyTorch 일 것이다.

 

설치하고자 하는 PyTorch에 맞춰서 CUDA 버전을 확인해보자.

https://pytorch.org/

 

 

CUDA 12.6 버전을 선택했다면,

CUDA 버전에 맞춰 PyTorch를 설치하도록 해야 한다.

 

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126

 

 

 

④ CUDA 버전 확인

그런데, 내가 가지고 있는 그래픽카드에서 CUDA 12.6 버전을 지원할까?

 

일단, 그래픽카드 종류에 따라 호환되는 버전을 확인해보자.

https://developer.nvidia.com/cuda-gpus

 

 

어?! 내 그래픽카드는 안보인다! 😅

위키피디아에서 확인해보자.

https://en.wikipedia.org/wiki/CUDA

 

 

7.5 버전이 호환되네!?

그러면, CUDA 버전은 어디까지 쓸 수 있을까?

https://en.wikipedia.org/wiki/CUDA

 

 

오! 다행히 최신 버전까지 모두 호환된다 !!!

CUDA 12.6 사용하는데, 아무런 문제가 없다.

 

 

⑤ CUDA 설치

원하는 버전을 골라서 다운로드 받아 설치하면 된다.

https://developer.nvidia.com/cuda-toolkit-archive

 

 

각자 환경에 맞춰서 잘 선택해서 다운로드 받으면 된다.

 

 

예전에는 직접 설정을 했어야 했던 것 같은데, 지금은 환경 변수에 알아서 잘 셋팅 되는 것 같다.

 

 

CUDA_PATH 부분을 살펴보면 된다.

 

 

 

⑥ cuDNN 설치

설치한 CUDA 버전을 기준으로 cuDNN 버전을 골라서 설치하면 된다.

https://developer.nvidia.com/rdp/cudnn-archive

 

NVIDIA Developer 사이트에 가입이 필요하다. 딱히 손해볼 것 없으니 가입 후 진행하면 된다.

 

 

다운로드 받으면 zip 압축 파일이 보일 것이고,

일단 압축을 풀어주면 된다.

 

 

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6

경로 밑에 저 압축을 풀어서 나온 bin, include, lib 디렉토리들을 그냥 덮어 쓰기로 복사해서 넣어주면 된다.

 

 

기존에 이미 경로가 있을텐데, 동일 이름의 디렉토리에 파일들을 추가하는 개념이다.

 

 

⑦ 테스트

잘 설치가 되었는지 확인을 해보자.

 

먼저, Python 환경이 필요하니 Python 설치부터 진행해야 한다.

- https://www.whatwant.com/entry/Python-397-Windows-10

 

좀 더 편한 개발환경을 위해 VSCode를 설치해보자.

- https://code.visualstudio.com/

 

CUDA 테스트를 위한 가상 환경을 만들어서 진행해보자.

 

> python -m venv .venv

> .venv/Scripts\activate.bat

 

PyTorch 라이브러리 설치는 다음과 같이 하면 된다.

 

> pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126

 

VSCode 터미널에서 실행해본 결과는 아래와 같다.

 

 

설치 중간에 WSL 관련해서 아래와 같은 메시지가 나올 수도 있다.

 

 

설치가 잘 되었으면

아래와 같이 import torch 해서 아래와 같이 동작을 확인해볼 수 있다.

 

 

그리고 당연히 드라이버 등이 잘 설치되었기에 nvidia-smi 실행 결과도 볼 수 있다.

 

 

이제 뭔가 환경이 준비 되었다!!!

 

반응형

AI Model 관련하여 공부/실습을 하기 위해서는 GPU 환경이 필요하다.

그리고, 주로 Linux 기반의 환경을 선호한다.

 

문제는 쓸만한 그래픽 카드가 달려있는 PC가

게임 등을 위해서 주로 Windows 환경이라는 것이다.

 

개인적으로 개발환경으로서 Windows는 선호하지 않지만

GPU가 필요한 개발환경이 필요하기에

어쩔 수 없이 Windows 환경을 꾸며야하는 상황이 생긴 것이다.

 

일단 내가 갖고 있는 그래픽 카드 정보를 확인하는 것이 필요한데,

이를 간단하게 살펴볼 수 있는 도구가 있다.

- https://www.techpowerup.com/download/techpowerup-gpu-z/

 

 

CPU 정보를 알려주는 CPU-Z 처럼

GPU 정보를 알려주는 GPU-Z 유틸리티가 있는 것이다.

 

설치 후 실행해보면...

내가 갖고 있는 미천한 그래픽 카드의 정보는 다음과 같다.

 

 

간단하게 포스팅 완료~

반응형

셀레나님의 스터디 가이드 일정표에 다음과 같이 되어있다.

  - 8주차: 부족한 부분 복습 또는 배운 내용을 활용해 새로운 캐글 데이터셋 분석

 

제일 어려운 "자율학습" ... 😅

 

 

0. Kaggle Dataset

그래서 찾아본 캐글 데이터는 다음과 같다.

  - https://www.kaggle.com/datasets/undefinenull/million-song-dataset-spotify-lastfm

 

 

너무 흔한 데이터셋 말고 새로운 것으로 해서 결측치 등을 포함한 데이터셋 찾는 것도

막상 찾아보려고 하니 쉽지 않았다 ^^

 

위에 찾은 것은 "음악 추천 시스템 데이터셋"으로

사용자와 음악 트랙 간의 상호작용 데이터를 활용하여 개인화된 음악 추천 시스템을 구축할 수 있는 데이터셋이라고 한다.

 

 

1. 데이터 다운로드

kaggle 데이터 다운로드 받는 것도 해보자.

 

 

 

2. 데이터프레임

다운로드 받은 데이터셋을 가볍게 살펴보자.

 

 

데이터의 실제 모습을 살펴보려 했는데, 컬럼이 많아서 한 눈에 잘 보이지는 않는다 😅

 

 

 

3. 결측치 처리

info() 정보에서 보이는 것처럼 2개 column에만 결측치가 있는 것으로 보이는데,

직접 한 번 확인해보자.

 

 

데이터들이 어떤 모습인지 한 번 살펴보자.

 

 

genre의 경우 50%가 훨씬 넘는 비율을 갖기에 해당 column을 삭제하면 좋겠는데,

정말 삭제해도 되는지를 고민해봐야 하는데...

잘 모르는 상황에서도 가만히 보면 tags를 가지고 genre를 대체할 수 있을 것으로 보인다.

 

반면, tags의 경우에는 2.22% 비율의 결측치만 있으므로, 해당 row에 대해서 drop을 하는 것으로 하자.

 

 

맞겠지만 그래도 혹시 모르니 확인을 해보자.

 

 

4. 컬럼 분리

tags 부분을 보면 여러 데이터가 ", "으로 묶여서 표현되어 있는 것을 볼 수 있다.

이것을 One-Hot-Encoding 방식처럼 분리를 해보자.

 

 

좀 더 분석해보고 했어야 했는데, 그냥 해보다보니 tags 의 개별 아이템 개수가 엄청 많았다.

덕분에(?) 전체 column의 개수가 120개가 되었다.

 

 

5. 통계

도메인 지식이 미천하다보니.... 😥

음악 분류에 따라 뭔가 수치들이 달리 나오지 않을까 추정해본다.

 

 

 

6. 그래프

뭔가 다양하게 분석을 해봐야할 것 같은데,

일단 생각나는대로 하나 집어서 그래프를 그려봤다.

 

 

원하는 그래프는 아니지만, 그래도 ...

 

 

 

음... ChatGPT한테 일을 많이 시켜봐야겠다.

반응형

드디어 마지막 챕터까지 왔다.

힘들었지만, 그래도 주말마다 꼬박 꼬박 해냈다.

 

07장 의료 데이터 분석 프로젝트

 

 

앞서 했던 "넷플릭스 데이터 분석 프로젝트"와 유사한 방식으로 진행하면 될 것 같다.

 

① 의료 데이터 분석 프로젝트 소개

② 의료 데이터셋 파악하기

③ 심부전 데이터셋 필터링하기

④ 심부전 데이터셋 결측치 처리하기

⑤ 심부전 데이터셋 통계 처리하기

⑥ 심부전 데이터셋 시각화하기

 

 

① 의료 데이터 분석 프로젝트 소개

앞서 진행한 넷플릭스 데이터 분석과 대부분 유사하게 진행되고

차이가 있다면 "logical indexing" 부분에 조금 더 중심을 두고 진행하는 것이라고 한다.

 

 

② 의료 데이터셋 파악하기

교재에서는 자세한 설명이 없었지만, 찾아보니 아래 데이터인 것 같다.

- https://www.kaggle.com/datasets/fedesoriano/heart-failure-prediction

 

 

직접 다운로드 받아보자.

 

 

다운로드 받은 CSV 파일을 데이터프레임으로 읽어오자.

 

 

샘플 데이터를 살펴보자.

 

 

각 columns 의미는 다음과 같다.

 

 

그런데, 교재의 데이터와는 좀 차이가 있는 것 같다.

교재에서 제공하는 데이터를 보면 일부 column에서 결측치 값이 보이는데,

Kaggle에서 내려받은 데이터에서는 결측치 값이 안보인다.

 

아쉽지만, 교재에서 제공받은 파일을 업로드해서 사용해야겠다.

 

 

 

③ 심부전 데이터셋 필터링하기

심장병 여부를 나타내는 'HeartDisease' 컬럼 데이터를 살펴보자.

 

 

결측치 값도 보이고, 0.0/1.0 데이터도 보인다.

값이 '1.0'인 데이터를 True (심장병 맞음) 로 판단하면 된다.

간단히 실습해보자.

 

 

 

④ 심부전 데이터셋 결측치 처리하기

결측치 값들이 얼마나 되는지 살펴보자.

 

 

그다지 큰 비율은 아니지만, 그래도 처리를 해줘야 한다.

책의 저자와는 다른 개인적인 취향으로 별도의 데이터프레임을 만들어서 작업을 진행했다.

 

 

앞서 해봤던 넷플릭스 데이터 분석과 거의 유사한 과정이다.

이렇게 진행한 결과는 다음과 같다.

 

 

 

⑤ 심부전 데이터셋 통계 처리하기

데이터프레임에서는 여러 통계량을 손쉽게 구할 수 있도록 다양한 함수를 제공해준다.

 

 

groupby()를 이용해서 그룹별 통계값들을 구할 수도 있다.

 

 

 

⑥ 심부전 데이터셋 시각화하기

여기에서 사용할 팔레트를 설정해보자.

 

 

흉통 유형을 카테고리화 한 다음 개수를 세고, 이를 파이 차트로 표현해보자.

 

 

심부전 빈도 그래프를 그려보자.

심부전증이 있을 때와 없을 때 ASY(무증상)가 압도적인지 살펴보기 바란다.

 

 

 

나이에 따른 HeartDisease 데이터를 한 번 살펴보자

 

 

이렇게 구한 값을 가지고 나이에 따른 심부전 여부를 살펴볼 수 있는 그래프를 그려보자.

 

 

 

심부전 범주형 산점도 그래프를 그려보자.

 

 

 

워드 클라우드도 하나 만들어보자.

 

 

예쁘게 하트 모양으로 그려졌다.

 

 

여기까지 해서 책을 한 번 살펴봤다.

추후 한 번 다시 복습하면서 곱씹어봐야겠다 ^^

반응형

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

 

 

AI 관련해서 공부를 한다면 최소한 한 번 이상 마주쳤을 가능성이 농후한,

갖고 있지 않더라도 책 표지를 보면 "아하! 그 책!" 이라고 외칠 그 유명한 책의 "리마스터판"이 나왔다.

벌써 8주년 이라는 것이 더 놀랍다 !!!

 

 

꼼꼼한 책을 보면서 혹시나 했는데, 역시나 일본 특유의 꼼꼼함을 보여주는 "사이토 고키"라는 분의 저서이다.

아쉽게도 어느 회사에서 연구하고 계시는지 등의 추가적인 정보는 찾을 수 없었다.

 

 

오옷! "개앞맵시" !!! 어디서 많이 들어본 닉네임을 갖고 계신 옮긴이.

'구글 엔지니어는 이렇게 일한다'라는 책의 번역도 맡으셔서 익숙한가!?

삼성전자 VD 사업부에서도 근무를 하셨었구나...

인사이트, 골든래빗 등의 출판사를 거쳐 지금은 한빛미디어에서 근무를 하고 계신 것으로 보인다 ^^

 

 

근래 봤던 책 중에서 중학교 2학년생의 리뷰를 책에 담아준 것은 처음 본 것 같다 !!!

김경수 학생도 대단하고, 한빛미디어도 대단하다는 생각을 해본다.

 

 

"밑바닥부터 시작하는 딥러닝 (Deep Learning from Scratch)"은 시리즈로 구성되어

현재 5권까지 출간되었고 6권도 출간 예정이라고 한다.

 

6권이 출간되기에 앞서 1권의 리마스터판이 이번에 다시 출간된 것이다.

 

 

순서에 상관없이 취사선택(?)하여 볼 수 있다지만

책의 챕터 구성을 보면 1권부터 보는 것이 맞을 것 같다.

 

CHAPTER 1     헬로 파이썬
CHAPTER 2     퍼셉트론
CHAPTER 3     신경망
CHAPTER 4     신경망 학습
CHAPTER 5     오차역전파법
CHAPTER 6     학습 관련 기술들
CHAPTER 7     합성곱 신경망(CNN)
CHAPTER 8     딥러닝

 

이 책은 딥러닝을 이해하는 데 필요한 지식을 기초부터 하나하나 차례로 설명해 준다고 한다.

 

정말 그렇다!

심지어 파이썬까지도 챕터를 하나 할당해서 알려주고 있다!!! 와우~!!

 

이 책이 특히 매력적인 것은 특정 라이브러리 사용을 최소화하고,

파이썬 코어 중심으로 실습 코드를 사용하고 있어서 내부적인 구현 사항에 대해 잘 살펴볼 수가 있다.

 

특히 이번 리마스터링을 통해 공부하기에 더더욱 좋아졌다.

 

 

그동안 이 책이 좋다는 것은 알았지만 출간된지 너무 오래되어 아쉬움이 있던 분들은

지금 바로 딥러닝에 대해서 진지하게 공부할 수 있도록 업데이트된 따끈따끈한 책이 등장했으니 지금 당장 구매를 !!!

 

반응형

이번에 공부할 것은 'Netflix Dataset'을 가지고 데이터 전처리 및 시각화를 알아보는 과정이다.

 

 

지난 포스팅에서부터 계속 말하지만,

교재를 기준으로 공부를 하긴 하지만 개인적으로 처음하는 공부는 아니기에

개인적 취향에 맞춰 필요한 부분만 정리하고 있다.

 

이번 스터디는 아래와 같은 순서로 공부해보도록 하겠다.

 

⑴ 넷플릭스 데이터 분석 프로젝트 소개

⑵ 넷플릭스 데이터셋 파악하기

⑶ Missing Value Handling

⑷ Feature Engineering

⑸ Visualization

 

 

⑴ 넷플릭스 데이터 분석 프로젝트 소개

넷플릭스의 데이터를 빠르게 살펴보고, 전처리를 수행한 다음 다양한 시각으로 데이터 분석을 하여

여러 인사이트를 도출해보는 프로젝트를 수행해보겠다.

 

데이터 시각화를 할 때에는 분석하는 데이터와 관련된 색상을 활용하면 완성도를 더 올릴 수 있다.

https://www.color-hex.com/color-palette/22942

 

 

 

⑵ 넷플릭스 데이터셋 다운로드

캐글에 등록되어 있는 넷플릭스의 영화 및 티비쇼 8000편 정보의 데이터셋을 활용하고자 한다.

https://www.kaggle.com/datasets/shivamb/netflix-shows

 

 

캐글에서 공개된 데이터는 Python으로도 다운로드를 받을 수 있다.

 

 

이렇게 내려 받은 파일을 pandas로 간단하게 읽어올 수도 있다.

 

 

실제 데이터를 확인해보면 다음과 같다.

 

 

각 columns 의미는 교재에 너무 잘 정리되어 있다.

 

 

 

⑶ Missing Value Handling

▷ 결측치 비율 別 처리 가이드

- 결측치가 데이터의 5% 미만이라면 → 행 삭제

- 결측치가 데이터의 5~20% 사이라면 → 대체

- 결측치가 데이터의 20% 이상이라면 → 열 삭제 권장

 

".info()"를 통해 간략하게 결측치 현황을 파악할 수 있긴 하지만, 정확한 비율을 다시 한 번 확인해보자.

 

 

교재에서는 원본 데이터(df)를 직접 수정하는 것을 권고하지만, 개인적인 취향으로 .copy()하여 작업하도록 하겠다.

 

 

값 대체할 것 대체하고, 행 삭제할 것 삭제한 뒤의 현황을 보면 다음과 같다.

 

 

8807개였던 데이터가 8790개로 변한 것을 확인할 수 있다.

그리고, 결측치도 모두 처리된 것을 볼 수 있다.

 

 

 

⑷ Feature Engineering

'rating' column은 '넷플릭스 등급 표시'를 해주고 있다.

즉, 일반적인 string 데이터가 아니라 category 형태로 그룹핑을 할 수가 있는 것이다.

- https://www.primevideo.com/help/ref=atv_hp_nd_cnt?nodeId=GFGQU3WYEG6FSJFJ

 

 

미국의 등급 시스템을 기준으로 묶어주면 되는데, 'age_group' 명칭의 column으로 생성해보도록 하겠다.

 

 

매핑하기 위한 딕셔너리를 작성하고, map()을 돌리면 잘 분류되어 값이 추가된 것을 볼 수 있다.

 

지금까지 작업한 내역들을 CSV 파일로 저장까지 하면서 일단 마무리 해보자.

 

 

 

⑸ Visualization

Graph를 그릴 기본 준비를 해보자.

 

 

원하는 정보를 검색하는 것을 해보자.

 

 

이번에는 'type' column의 내역을 한 번 살펴보자.

 

 

해당 데이터를 가지고 파이 차트를 그려보자.

 

 

이번에는 장르 정보를 담고 있는 'listed_in' column을 살펴보자.

 

 

여러 장르에 속하는 경우 ", "로 여러 항목이 나열되어 있는 것을 볼 수 있다.

", "로 split을 하는데 'expand=True' 옵션이기에 column을 확장한다.

 

 

그런다음 다시 'stack()'으로 세로 방향으로 변환(column 하나로 합치기)해서 value_counts() 한다.

이제 막대 그래프로 그려보자.

 

 

이 그래프를 보고 얻을 수 있는 인사이트는 다음과 같다고 한다.

 

"넷플릭스는 드라마와 국제 영화에 집중하고 있습니다. 글로벌한 콘텐츠 제공과 깊이 있는 스토리 라인으로 시청자들의 다양한 취향을 만족시키려 하려는  것 같습니다. 또한, 다양한 영화 장르의 제공을 통해 시청자들에게 보다 풍부한 선택지를 제공합니다. 정리하자면, 넷플릭스의 전략은 장르 다양성과 글로벌 사용자들의 요구를 동시에 충족시키기 위한 방향으로 나아가고 있음을 알 수 있습니다."

 

이번에는 나이 그룹별 국가별 콘텐츠를 살펴보자.

 

 

'country' column의 경우에도 ', '로 구분된 여러 나라가 입력되어 있음을 알 수 있다.

일단, split() 해보자.

 

 

pandas의 옵션을 설정하는 기능을 활용해서 출력 값의 개수 제한을 풀어봤다. (유용해 보이지는 않는다)

 

list 형태로 되어있는 'country' column을 기준으로 row를 분리해보자.

 

 

7번 index를 보면 row가 분리된 것을 확인할 수 있다.

 

 

더 자세히 살펴보자.

 

 

각 연령대별로 국가의 개수를 count하고 이를 표 형태로 살펴보자.

 

 

'.groupby('age_group')' 연령대로 그룹핑을 하고, '['country'].value_counts()' 국가의 개수를 센 뒤, '.unstack()'를 통해 세로로 정리된 데이터를 가로 형태로 변환을 했다.

 

우리가 사용할 항목들만 선별해서 정리해보자.

 

 

결측치 값이 보인다. 0으로 채우자.

 

 

지금 보이는 값으로는 서로간의 값 비교를 하기가 쉽지 않다.

비율로 값들을 변경해보자.

 

 

'.sum(axis=0)'을 통해 각 열의 합을 계산함 → 국가별 sum() 값을 구함

 

 

'.div(..., axis=1)'을 통해 각 연령대듸 값들을 국가(column)의 총합으로 나누어 비율을 계산

 

지금까지 진행한 내용을 가지고 히트맵을 그려보자.

 

 

 

위 그래프를 보고 얻을 수 있는 인사트는 다음과 같다고 한다.

 

"United States/Canada는 모든 나이 그룹에서 골고루 이용자를 가지고 있기에 넷플릭스가 다양한 연령층에 걸쳐 널리 사용되고 있음을 나타내고 있다. 그리고 모든 국가에서 성인 이용자가 가장 많은데, 이는 넷플릭스의 콘텐츠가 성인들의 관심사와 취향을 충족시키는 데 중점을 두고 있다는 것을 보여준다. 성인층의 높은 비율은 넷플릭스의 다양한 장르와 깊이 있는 콘텐츠가 성인 이용자들에게 특히 매력적임을 시사한다. 한편 India/Japan은 Older Kids의 비율이 꽤 높은데 이는 해당 국가들에서 넷플릭스가 어린이와 가족 단위의 콘텐츠를 많이 제공하고 있음을 나타낸다. 이러한 결과는 각국의 문화적 특성과 콘텐츠 선호도가 넷플릭스 이용 패턴에 영향을 미친다는 것을 시사한다. 이러한 분석을 통해 넷플릭스는 각 국가별로 이용자의 연령대에 맞춘 컨텐츠와 교육적인 프로그램을 강화할 수 있으며, 성인 비율이 높은 국가에서는 성인 대상의 드라마/영화/다큐멘터리 등을 더욱 강조할 수 있다."

 

이번에는 워드 클라우드를 한 번 그려보도록 하자.

일단 넷플릭스 로그 이미지를 확보하자.

- https://en.m.wikipedia.org/wiki/File:Netflix_2015_logo.svg

 

 

사이트에서 보이는 저 로고를 다운로드 받아봤다.

 

 

PNG 파일을 JPG 파일로 변환을 했고,

투명한 배경을 검은색이 아닌 하얀색으로 나오도록 하기 위해서 중간에 하얀색 그림을 그려서 합치도록 했다.

 

 

저 글씨 모양으로 wordcloud가 나오도록 하려는 것이다.

이제 본격적으로 wordcloud를 그려보자.

 

 

정보를 보기에 좋은 방식은 아니지만, 재미있게 표현한 결과는 다음과 같다.

 

 

 

지금까지 CSV 데이터 파일을 읽어들여서 결측치 값들을 적절히 처리하고

category화 할 수 있는 것들을 가공하면서 feature engineering을 한 뒤에

이를 여러 Graph로 visualization해서 인사이트를 살펴보는 과정을 해봤다.

 

반응형

이번에는 웹 데이터를 수집하는 것에 대해서 알아보는 챕터이다.

 

 

1. robots.txt

- 웹 사이트를 크롤링하는 것은 불법의 여지가 있으며, 피해를 줄 수도 있음

- 최소한 해당 사이트의 robots.txt 파일을 참고해서 제약 사항들을 잘 지켜주는 것이 중요함

 

- 이번 실습에서 활용할 야후 파이낸스 사이트의 robots.txt 파일 내용 확인

  . https://finance.yahoo.com/robots.txt

 

 

  . User-agent: 크롤러 식별

  . Disallow: 크롤링 금지 디렉토리/페이지 지정

  . Allow (Disallow 함께 사용): 크롤링 허용 디렉토리/페이지 지정

 

 

  . Sitemap: 사이트 맵 파일의 위치를 지정

 

 

2. BeautifulSoup

- HTML/XML 문서의 구문을 분석하기 위한 파이썬 패키지

- 2004년 발표 후 현재(25년 2월 16일) 기준 v4.13.2 버전까지 출시 → bs4

  . https://www.crummy.com/software/BeautifulSoup/

 

 

 

3. CSS Selector

- CSS(Cascading Style Sheets)에서 사용되는 선택자(Selector)를 활용해 HTML 요소를 선택하는 방법

 

 

- 이 때 사용할 수 있는 여러 종류의 Selector가 있다.

 

  ① Class Selector

 

 

  ② Child Selector

 

 

  ③ ID Selector

 

 

- Selector와 별도로 그냥 텍스트만 추출할 수도 있음

  . 자동으로 좌우 공백들은 제외해서 추출함

 

 

4. find() / find_all()

- CSS Selector도 충분히 좋은 방법이지만, find() / find_all() 을 이용해서도 원하는 것을 얻을 수 있다.

 

  ① Class

 

 

  ② Tag

 

 

  ③ ID

 

 

 

5. Web

- 이번 실습에서 사용할 야후 파이넌스 사이트에 접속을 해보자.

  . https://finance.yahoo.com/

 

 

- 'Samsung Enecltronics'를 검색해서 들어가고, 왼쪽 메뉴의 'Historical Data'를 선택하자.

  . https://finance.yahoo.com/quote/005930.KS/history/

 

 

- 그러면, 이제 Python으로 사이트 정보를 읽어와보자.

 

 

- 어?! 읽어오지 못한다. 그런데 왠 "Too Many Requests" ????

  . 책에서는 404 에러가 발생한다고 했는데, 나는 매번 429 에러가 발생을 했다.

 

 

6. Header

- 내가 웹브라우저로 접근하는 것처럼 해야 접속이 될 것 같다.

- F12 눌러서 개발자 도구 열고 → 상단 메뉴 中 '네트워크' 선택 → F5 눌러서 사이트 리프레쉬 → "요청 헤더" 확인

 

 

- 'User-Agent' / 'accept' 2개 정보를 copy해서 넣어보자.

 

 

- 성공적이다 !!!

 

 

7. Parse

- 내가 읽어오기 원하는 정보가 있는 곳에서 마우스 오른쪽 버튼 클릭 → '검사' 선택

 

 

- 그러면, 개발자 모드 화면에 HTML Tag 코드 확인 가능

 

 

- 잘 살펴보면 특정 row를 읽어오면 될텐데, '<tr>' 태그로 되어 있는 것을 볼 수 있다.

 

 

- find_all() 사용하면 상당히 많은 내용이 잡히기 때문에, 출력은 일부분만 하도록 했다.

 

 

- 좀 더 구체적으로 원하는 정보를 찾아내기 위해서, class 값을 얻어오고 활용하는 것을 해보자.

 

 

 

8. Pretty Print

- 하나의 row에는 7개의 column으로 구성되었다는 것을 알고 있으니, 이를 이용해서 예쁘게 출력을 해보자.

 

 

- 사실 이런식으로 처리하는 것은 위험 부담이 크다.

  . 아래와 같은 예외 데이터가 있을 확률이 아주 높기 때문이다.

 

 

 

9. Graph

- Matplotlib을 이용해서 그래프를 그려보자.

  . date는 일반적인 날짜 형태로 바꿔주는 것이 좋다

  . price는 integer 형태로 바꿔줘야 한다.

 

 

 

 

 

10. Pandas

- BeautifulSoup 대신에 pandas를 이용할 수도 있다.

  . 하지만, 내부적으로는 BeautifulSoup 및 lxml 라이브러리를 이용한다.

 

 

 

간만에 다시 한 번 찬찬히 살펴볼 수 있어서 좋았다!

반응형

+ Recent posts