독자여러분이지금까지그저파이썬언어의구문만만지작거리는수준이었다면,이책에서다루는[실습프로젝트]를직접수행함으로써프로그램을완벽하게작성하는수준으로즉시성장할수있을것이다.이책에서우리는실험을수행하고,통계개념을탐구하며,외계행성을탐지하는등인류의역사속에서천재들을괴롭혔던새로운문제를해결하면서파이썬기술을연마해나간다.
각장은명확히프로젝트의목표를정의하면서시작하고,문제를공략하는방법을논의한다음,전문프로그래머처럼생각하도록고안된16가지실습과제를다뤄본다.이책에서함께해안경비대의수색및구조작업을돕고,나사(NASA)의달비행을계획하고실행하며,얼굴인식을사용해보안이필요한실험실의출입을제한하는등의과업을수행해보자.
이책의실습프로그램은초보자도쉽게이해할수있다.하지만,단계가진행됨에따라점차수준높은기법을배울수있으며,그에따라여러분의코딩능력도향상될것이다.이책에서주어진과업을모두달성하고나면,파이썬을활용해실생활의여러문제를풀수있는역량을갖추게될것이다.
|이책에서다루는내용|
-맷플롯립(matplotlib),넘파이(NumPy,보케(Bokeh),판다스(pandas),리퀘스츠(Requests),뷰티플수프(BeautifulSoup)등의라이브러리사용법
-NLTK와OpenCV같은자연어처리와컴퓨터비전모듈을다루는방법
-별시야(starfield)상에서이동하는천체를감지하고추적하는프로그램을작성해보는프로젝트
-인터넷에서연설문을스크레이핑해서자동으로요약해보는프로젝트
-화성궤도레이저고도계(MOLA)지도를사용해화성우주선이착륙할지점을선택하는프로젝트
-데이터시각화와그래프그리기도구의도움을받아서좀비아포칼립스상황에서살아남게하는프로젝트
|이책의구성|
1장베이즈확률로위치예측하기-“실종된난파선선원을찾아라”
파이썬만에서발생한실종사건에서해안경비대가효율적으로탐색과구조임무를수행하도록,베이즈확률규칙을사용해돕는다.OpenCV,NumPy,itertools모듈을활용한다.
2장NLTK로문서간유사도측정하기-“이소설의원작자는누구일까”
자연어처리를통해아서코난도일이나H.G.웰스중누가『잃어버린세계』를썼는지를결정한다.NLTK,matplotlib등의모듈은물론이고불용어(stopwords),품사,어휘의풍부함,자카드유사성(Jaccardsimilarity)등의스타일로메트리(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,파이썬이미징라이브러리(PythonImagingLibrary),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를사용한다.
각장의끝에는[실습프로젝트]나[도전프로젝트]가있다.해답은이책의부록에실려있다.이책이제시한답이유일한정답은아니며,어쩌면여러분만의더나은해답을찾을수있을것이다.하지만[도전프로젝트]는여러분이직접해결해야한다.직접해보거나아니면포기하거나둘중하나이며,직접해보는것은무언가를배우는아주훌륭한방법이다.이책이여러분에게새로운프로젝트를시작할동기가되길바란다.이책의코드와[실습프로젝트]해답을이책의깃허브페이지인https://github.com/onlybooks/python-projects에서다운로드할수있다.
|이책의대상독자|
이책은2년차개발자를대상으로한파이썬서적이다.기본프로그래밍기법은다루지않으며,핸즈온프로젝트를기반으로하는실전연습을목표로한다.따라서여러분은이미배운개념을재탕한책을사느라쓸데없는돈을들이거나책꽂이를채우지않아도된다.이책에서는프로젝트의모든단계를설명하며,라이브러리나모듈을사용하는자세한절차를제시할것이다.물론라이브러리나모듈을설치하는방법도함께설명한다.
[추천사]
프로그래밍세상에첫발을내디뎠을때가생각나는가?컴퓨터라는만능기계를완전히통제할수있다는기쁨도잠깐이고,말이통하지않는하인을어떻게활용해야할지난관에부딪히면서좌절감이들기시작한다.모든일을할수있으면서,한편아무일도하지못하는컴퓨터를길들이기위해여러가지시도를한다.프로그래밍언어를배우면서표준라이브러리를기웃거리다가,다양한프레임워크와외부라이브러리를활용하면서오픈소스로만들어진각종소프트웨어를실행하고경우에따라뜯어보게된다.여기까지진행해왔다면근본적인질문이떠오르기마련이다.실생활에서부딪히는문제를풀기위해컴퓨터를활용하려한건데정작나는컴퓨터가제대로동작하게만드는기술만익히고있는건아닐까?
하지만현실에서직면한문제를잘정의한다음에컴퓨터가해결하도록만드는작업은결코쉽지않다.많은대기업과스타트업의사무실에서수많은개발자들이매일같이더나은세상을만들기위한소프트웨어개발에매진하고있다는사실이이를증명한다.사람은모호한요구사항도적절히알아서처리하는융통성이있지만,컴퓨터는한바이트만잘못되어도문제풀이를거부한다.아니,이는지극히사람관점으로바라본아쉬움이고,컴퓨터는사람의명령을거부하는대신잘못된한바이트까지묵묵하게수행할뿐이다.소프트웨어개발이어려운이유를설명하려면,컴퓨터가존재하는세상과사람이살아가는세상사이에는크나큰간극이존재한다는사실에서출발할필요가있다.
그렇다면학습목적이나개인적인취미목적으로컴퓨터에게제대로된문제풀이를시키기위해어떤연습이필요할까?수학이나논리학을공부해엄정한요구사항을뽑아내면될까?아니면공학적인관점에서접근해미리만들어진라이브러리나프레임워크를활용해API를적절히조합하면될까?그것도아니면,다양한실험을통해시행착오를거치면서원하는결과를도출할때까지알고리즘을개선하면될까?결론적으로이모든연습이필요하지만체계적이면서도안전하게연습할가상의놀이터를찾기란쉽지않다.우리에게는아주쉽지도그렇다고어렵지도않은문제를확보하고,수학적이고과학적인방법으로문제의해법을정리하며,라이브러리와프레임워크를사용해코드를작성하고,그코드를발전시켜가면서점진적으로개선하기위한지침이필요하다.
이책『실전파이썬핸즈온프로젝트』는프로그래밍언어나기술관점에서만들어낸‘예제를위한예제’를소개하는선에서그치지않고,현실에서찾아볼수있는문제를해결하기위한기술적인접근방식을소개한다.요식체계를대폭줄여다루기쉬운파이썬언어로다양한문제를직접풀어보며그과정에서이론과실전을조합하는방식에대해감을잡고실제현실에적용하는역량을배양하는것이이책의주요목표다.파이썬기본프로그래밍방법만알고있으면,넘파이,OpenCV,NLTK,판다스,맷플롯립등의라이브러리설치와사용방법은물론이고,제대로된파이썬프로그램을만들기위한클래스와함수설계와구성방법도실제사례로배울수있다.
이책에서는단순히데이터베이스에서값을가져오고,사용자인터페이스에서입력받은값을저장하는전형적인CRUD(Create,Read,Update,Delete)형태의업무용애플리케이션이아니라,다양한형태의비정형데이터(이미지,텍스트등)와정형데이터(CSV형태의표데이터)를활용해원하는문제를통계적인방식과머신러닝방식으로해결하는애플리케이션을소개하기에,어떻게보면미래예비데이터과학자를위한현실적이면서도흥미로운파이썬입문서로봐도좋을것같다.이책에서제공하는데이터과학을비롯해,머신러닝과인공지능분야에서자주등장하는다양한문제는복잡한하드웨어나소프트웨어구성없이도부담없이풀수있다.
소설의원작자를찾고,핵심문장을뽑아내고단어구름을만들며,나만의해독불가능한암호문을작성하고,천체이미지로명왕성을찾고,아폴로8호의궤적을시뮬레이션하고,화성이미지를분석해안전한화성착륙지점을찾고,물리학법칙을응용해멀리떨어진외계행성도찾으며,머신러닝을활용해얼굴형태를넘어서개인별얼굴을인식하고,인구밀도지도를상호대화식으로구성해시각화를하는등통계학,물리학,천문학영역에해당하는재미있는내용이연이어나오므로,어릴때과학잡지를읽으면서상상의나래를펼쳤던과학애호가들이라면이책을무척재미있게읽을수있으리라생각한다.
각장에나온내용을즐겁게읽은다음에는기존프로그램을확장하는방식으로설계된[실습프