실전 파이썬 핸즈온 프로젝트 - 문제 해결과 실무 응용력을 키우기 위한 나만의 파이썬 포트폴리오 만들기
리 본 지음, 오현석 옮김 / 책만 / 2022년 5월
평점 :
장바구니담기


#실전파이썬핸즈온프로젝트 #책만#책만출판사#이벤트#파이썬#포트폴리오#프로그래밍#코딩#통계학#물리학#천문학#베이즈#베이지안#베이즈통계학#프로젝트#실습#넘파이#판다스#데이터시각화#자연어처리#컴퓨터비전#OpenCV

책만의 출판기획자분이 페이스북 그룹에서 <실전 파이썬핸즈온 프로젝트>라는 책 이벤트를 하고 계셨다. 나는 통계/데이터 분석 분야로 이직하고 싶어서 현재 파이썬 언어를 공부하고 있다. 그런데 시중의 많은 파이썬 언어 교재들을 보면 단순히 구문만 치거나 사각형 그리기 등 실전적이지 않은 재미없는 예제들이 많았다. 그런데 이 책의 목차를 보면 통계학, 물리학, 천문학의 문제를 해결하는 예제들이 많아서 실용적이라는 생각이 들었다. 나는 통계/데이터 분야로 이직하고 싶어서 <통계학> 분야에 특히 관심이 많은데 베이즈 확률로 위치를 예측해 실종된 난파선을 찾는 예제, 넘파이로 통계 분석 처리하기 - “안전한 화성 착륙 지점을 찾아라.” 예제가 가장 궁금하고 배우고 싶었다. 베이즈 확률에 대한 지식은 공부해 본 경험이 있는데 이걸 이용해 실종된 난파선을 찾는 방법이 궁금했다. 그리고 넘파이도 써 본 경험이 있는데 이걸로 통계 분석을 처리해 안전한 화성 착륙 지점을 찾는 방법도 궁금했다. 또 나는 우주를 좋아하는데 명왕성 찾기, 외계행성 찾기 예제도 너무 재밌어 보였다. 그리고 좀비 떼로부터 탈출하는 예제도 있는데 좀비물을 좋아해서 이것도 해보고 싶었다. 책을 소개하는 유튜브에 들어가서 인터뷰 영상도 봤는데 책을 읽고 다양한 예제를 해보고 싶은 마음이 더 커져서 책 이벤트를 신청했고 당첨되어 책을 받게 되었다.


책의 저자-리 본 (Lee Vaughan)

프로그래머이며, 열렬한 대중문화 애호자이자 교육자이고, 저자로 활약 중이다. 엑슨모빌ExxonMobil의 임원급 과학자로, 수십 년 동안 복잡한 컴퓨터 모델을 구성, 검토하고, 소프트웨어를 개발, 테스트했으며, 지질학자와 엔지니어를 교육해왔다. 독학을 하는 파이썬 프로그래머들이 자신의 파이썬 기술을 날카롭게 다듬으면서 흥미를 느낄 수 있도록 이 책과 『신비한 파이썬 프로젝트』(영진닷컴, 2020)를 저술했다.

옮긴이-오현석

비사이드소프트BSIDESOFT 이사로 일하면서 매일매일 고객의 요청에 따라 코드를 만들어내고 있는 현업 개발자다. 어릴 때 처음 컴퓨터를 접하고 매혹된 후 경기과학고, KAIST 전산학과(프로그래밍 언어 전공 석사)를 거치면서 계속 컴퓨터를 사용해왔다.

직장에서는 주로 코틀린이나 자바를 사용한 서버 프로그래밍을 하고, 주말이나 빈 시간에는 번역을 하거나 공부를 하면서 즐거움을 찾는다. 시간이 아주 많이 남을 때는 시뮬레이션 게임을 하면서 머리를 식히며 놀고, 어떻게 하면 막내자식을 프로그래밍의 세계로 끌어들일 수 있을까 고민 중인 아빠이기도 하다.

『코어 파이썬 애플리케이션 프로그래밍 Core Python Applications Programming Third Edition』(에이콘출판, 2014)을 시작으로 『Kotlin in Action』(에이콘출판, 2017), 『한 권으로 읽는 컴퓨터 구조와 프로그래밍』(책만, 2021), 『파이썬으로 살펴보는 아키텍처 패턴』(한빛미디어, 2021), 『Programming in Scala 4/e』(에이콘출판, 2021) 등 30여 권의 책을 번역했다.

책의 목차

| 이 책의 구성 |

1장 베이즈 확률로 위치 예측하기 - “실종된 난파선 선원을 찾아라”

파이썬만에서 발생한 실종 사건에서 해안 경비대가 효율적으로 탐색과 구조 임무를 수행하도록, 베이즈 확률 규칙을 사용해 돕는다. OpenCV, NumPy, itertools 모듈을 활용한다.

2장 NLTK로 문서 간 유사도 측정하기 - “이 소설의 원작자는 누구일까”

자연어 처리를 통해 아서 코난 도일이나 H. G. 웰스 중 누가 『잃어버린 세계』를 썼는지를 결정한다. NLTK, matplotlib 등의 모듈은 물론이고 불용어(stop words), 품사, 어휘의 풍부함, 자카드 유사성(Jaccard similarity) 등의 스타일로메트리(stylometry) 기법을 활용한다.

3장 NLTK로 텍스트 요약하기 – “핵심 문장을 뽑아내고 단어 구름을 만들어보자”

마틴 루터의 ‘나에게는 꿈이 있습니다’와 같은 유명한 연설을 인터넷에서 긁어와서 요점을 요약한다. 그리고 소설 본문을 멋진 광고나 판촉 글로 변환한다. BeautifulSoup, Requests, regex, NLTK, Collections, wordcloud, matplotlib 등을 활용한다.

4장 암호화 기법으로 안전한 메시지 전송하기 – “해독 불가능한 암호문을 작성해보자”

켄 폴릿의 베스트셀러 스파이 소설인 『레베카의 열쇠』에 나오는 원타임 패드 방식을 디지털 방식으로 재구성해서, 아무도 깰 수 없는 암호문을 여러분의 친구와 함께 공유한다. Collections 모듈을 활용한다

5장 OpenCV로 이미지 차이 분석하기 – “천체 이미지로 명왕성을 찾아보자”

클라이드 톰보가 1930년 명왕성을 발견할 때 사용한 장치인 ‘반짝 비교정’을 복원한다. 그리고 현대적인 컴퓨터 비전 기술을 사용해 자동으로 행성이나 운석과 같이 별 시야에서 이동 중인 순간적인 천체를 찾아낸다. OpenCV와 NumPy를 활용한다.

6장 터틀 그래픽으로 궤적 그리기 – “우주 경쟁에서 승리하기 위한 아폴로 8호의 궤적 시뮬레이션”

위험한 도박에 참여해 미국의 아폴로 8호가 달 착륙 경쟁에서 승리할 수 있도록 돕는다. 미 항공우주국 나사(NASA)가 예상보다 1년이나 더 일찍 달 궤도에 도착해서 소련이 실질적으로 달 착륙 프로그램을 포기하게 만든, 똑똑한 자유 귀환 비행 궤적을 그림으로 그려서 실행해본다. turtle 모듈을 활용한다.

7장 넘파이로 통계 분석 처리하기 “- 안전한 화성 착륙 지점을 찾아라”

실제적인 미션 목표를 사용해 화성 착륙선의 잠재적인 착륙 후보지 범위를 좁힌다. 화성 지도에 후보 지점과 각 지점의 통계를 요약해 표시한다. OpenCV, 파이썬 이미징 라이브러리(Python Imaging Library), PIL, NumPy, tkinter에 대한 경험을 얻을 수 있다.

8장 OpenCV로 이미지를 처리하고 맷플롯립으로 시각화하기 – “멀리 떨어져 있는 외계행성을 찾아라”

외계행성이 항성의 앞을 통과하는 우주적 사건을 시뮬레이션하면서, 상대적인 광도 변화를 그래프로 그리고 행성의 지름을 추정한다. 새로 발사된 제임스 웹 우주 망원경이 직접 외계행성을 관찰한 결과를 시뮬레이션해서 행성의 하루 길이를 추산하면서 8장을 끝낸다. OpenCV, NumPy, matplotlib을 사용한다.

9장 OpenCV로 얼굴 형태 감지하기 – “사람과 외계인을 구별해내는 피아식별 장치를 만들라”

비전을 이용해 우주군 해병대와 적대적인 돌연변이를 구분하는 자동 포탑을 프로그래밍한다. OpenCV, NumPy, playsound, pyttsxw, datetime을 사용한다.

10장 머신러닝 알고리즘으로 개인별 얼굴 인식하기 – “외계인의 실험실 침입을 막아라”

얼굴 인식을 통해 보호된 실험실에 대한 접근을 제한한다. OpenCV, NumPy, playsound, pyttsxw, datetime을 사용한다.

11장 판다스와 시각화 도구로 지도 그리기 – “인터랙티브한 인구 밀도 지도를 만들어 좀비떼로부터 탈출하라”

TV 드라마 <워킹 데드>의 생존자들이 애틀랜타에서 탈출해 미국 서부의 안전한 지대로 대피하도록 돕는 인구 밀도 지도를 만든다. pandas, bokeh, holoviews, webbrowser 를 사용한다.

12장 프로파일러로 프로그램 실행 속도 추정하기 – “우리는 지금 현실 세계에 있는가 가상 세계에 사는가”

시뮬레이션 안의 존재(어쩌면 우리 자신일 수도 있음)가 자신이 컴퓨터 시뮬레이션 안에 살고 있음을 알 수 있는 증거를 찾는 방법을 식별한다. turtle, statistics, perf_counter를 사용한다.


책의 특징

이 책은 천문학이나 로켓 과학, 인공지능 등의 분야에서 실제로 해결해야 했던 문제나 있을 법한 문제를 파이썬으로 푸는 방법을 보여준다. 다양한 문제를 파이썬에 존재하는 라이브러리를 통해 코드로 푸는 방법을 배울 수 있다. 이 책의 목표는 요식 체계를 대폭 줄여 다루기 쉬운 파이썬 언어로 다양한 문제를 직접 풀어보며 그 과정에서 이론과 실전을 조합하는 방식에 대해 감을 잡고 실제 현실에 적용하는 역량을 배양하는 것이 이 책의 주요 목표이다. 넘파이, OpenCV, 판다스, 맷플롯립 등의 라이브러리 설치와 사용 방법은 물론이고, 제대로 된 파이썬 프로그램을 만들기 위한 클래스와 함수 설계와 구성 방법도 실제 사례로 배울 수 있다. 이 책에서는 단순히 데이터베이스에서 값을 가져오고, 사용자 인터페이스에서 입력받은 값을 저장하는 전형적인 CRUD(create, Read, Update, Delete) 형태의 업무용 애플리케이션이 아니라, 다양한 형태의 비정형 데이터(이미지, 텍스트 등)와 정형 데이터(CSV 형태의 표 데이터)를 활용해 원하는 문제를 통계적인 방식과 머신러닝 방식으로 해결하는 애플리케이션을 소개한다.

책의 장점

이 책의 장점은 이 책으로 통계학, 암호학, 천문학 등 다양한 분야의 학문을 배울 수 있다. 각종 학문의 문제 자체도 흥미진진하고, 문제에 얽힌 역사적/과학적 사실도 재미 삼아 읽기에 부족함이 없으며, 문제를 해결하기 위한 아이디어를 프로그램으로 풀어나가는 방법 또한 흥미진진하다. 그리고 이런 복잡한 문제를 파이썬과 파이썬 생태계에 존재하는 편리한 라이브러리를 통해 얼마나 짧은 코드로 쉽게 풀 수 있는지를 감상하면서 감탄하는 경험도 할 수 있다. 이 책은 프로그래밍 언어나 기술 관점에서 만들어낸 '예제를 위한 예제"를 소개하는 선에서 그치지 않고, 현실에서 찾아볼 수 있는 문제를 해결하기 위한 기술적인 접근 방식을 소개해 예제를 지루하게 배우지 않고, 재미있게 배울 수 있다. 어떻게 보면 미래 예비 데이터 과학자를 위한 현실적이면서도 흥미로운 파이썬 입문서로 봐도 좋을 것 같다. 이 책에서 제공하는 데이터 과학을 비롯해, 머신러닝과 인공지능 분야에서 자주 등장하는 다양한 문제는 복잡한 하드웨어나 소프트웨어 구성없이도 부담 없이 풀 수 있다.

책의 후기

시중에 많은 프로그래밍 책과 파이썬 관련 책들이 있지만, 대부분 어떤 프로젝트를 하기보다는 예제를 위한 예제(사각형 그리기, 원그리기 등)과 같이 재미있는 프로젝트보다는 재미없는 예제를 하는 경우가 많아서 프로그래밍을 배울 때 지루해하거나 중도 포기하는 경우가 많다. 그러나 이 책은 다양한 학문의 지식을 배우고, 그것을 응용해 현실에서 찾아볼 수 있는 문제를 컴퓨터 프로그래밍으로 해결하면서, 재미있게 다양한 지식과 프로그래밍을 공부할 수 있다. 앞으로 우리나라에 예제를 위한 예제를 해결하는 재미없는 프로그래밍 책들이 출판되는 것이 아니라, 재미있는 프로젝트가 많이 있는 책들이 해외에서 많이 번역되어 국내에 출판되고, 우리나라에서도 우리나라 분들이 쓰신 이런 책들이 많이 출판되면 좋겠다. 그런 책들이 많이 번역되고, 출판된다면 사람들이 컴퓨터 프로그래밍 공부를 재미있게 할 수 있을 것이라는 생각이 든다. 또 이 책을 학습하면서 컴퓨터 프로그래밍이 통계학, 암호학, 천문학과 같은 다양한 학문에서 다양하게 쓰이는 것을 보면서 신기하고 놀라웠다. 그리고 프로그래밍 공부를 더 하고 싶은 마음이 들었다.



댓글(1) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
dltkddnjs150 2023-01-02 23:10   좋아요 0 | 댓글달기 | URL
실전파이썬핸즈온프로젝트,책만,책만출판사,이벤트,파이썬,포트폴리오,프로그래밍,코딩,통계학,물리학,천문학,베이즈,베이지안,베이즈통계학,프로젝트,실습,넘파이,판다스,데이터시각화,자연어처리,컴퓨터비전,OpenCV