《R和Ruby数据分析之旅》目录—导读
版權聲明
R和Ruby數據分析之旅
Copyright ?2012 by O’Reilly Media, Inc.
Simplified Chinese Edition, jointly published by O’Reilly Media, Inc. and Posts & Telecom Press, 2013. Authorized translation of the English edition, 2013 O’Reilly Media, Inc., the owner of all rights to publish and sell the same.
All rights reserved including the rights of reproduction in whole or in part in any form.
本書中文簡體版由O’Reilly Media, Inc.授權人民郵電出版社出版。未經出版者書面許可,對本書的任何部分不得以任何方式復制或抄襲。
版權所有,侵權必究。
內容提要
這是一本十分特別、充滿趣味和奇思妙想的編程及數據分析的書籍。在作者的帶領下,讀者將學會使用Ruby和R這兩個強有力的編程工具,對現實生活中的一些問題進行探索,嘗試發現一些事物運行的模式、規律,通過數據的獲取、建模和分析找出解決方案。
本書開篇分別對Ruby和R語言做了從零開始、簡明扼要的介紹,包括安裝、開發環境的使用、基本語法和重要特性。這為后面的探究工作打下堅實的基礎。
探索之旅包括6個部分,其中包括處理辦公室的衛生間安排問題,考查簡單的市場經濟體系的運行狀況,挖掘特定用戶的電子郵件行為模式,用音頻和視頻兩種不同方法來測定自己的心率,模擬鳥兒結群飛行的場景,最后通過人工營造一個具備進食、生殖和進化特性的種群,來看其在現實世界中的一些影子。
閱讀本書,讀者不但能學到Ruby和R的基本知識和技巧,更能學會如何借助編程來對現實生活中的問題進行建模和模擬,特別是怎樣對數據進行集成、處理和分析。相信讀過本書之后,讀者將有能力和意愿去開啟自己的探索和發現之旅。
O'Reilly Media,Inc.介紹
關于作者
Sau Sheong Chang從事軟件開發工作已超過17年,至今仍是一個激情四射的程序員。他主要開發網絡應用程序,近來則涉足數據相關的和云相關的系統。他在Ruby編程領域已經活躍了6年,使用R語言也超過了1年。他在當地的開發者社區非常活躍,且在許多技術會議上發表過演講,尤其是Ruby領域的會議。
他已經出版過兩本書,一本是2008年的Ruby on Rails Mashup Project,另一本是2010年的Cloning Internet Applications with Ruby,兩本書都由Packt Publishing出版。Sau Sheong Chang是新加坡惠普實驗室的應用研究主管,專注于云計算、大規模數據和城市化。他以前曾在一家知名的網絡游戲公司做過一段時間的首席技術官,也曾在Yahoo!東南亞做過一段工程主管。更多詳細信息可以在www.saush.com/profile上找到。
封面介紹
本書封面上的動物是冠海豹,這是一種生活在北大西洋的有鰭哺乳動物。它的學名Cystophora cristata在希臘語中是“氣囊攜帶者”的意思,這是因其4歲左右時會在雄性頭上長出可充氣膨脹的冠子而得名。這冠子被用于求偶,也可以用來威脅競爭對手或敵人——冠海豹是所有海豹中最具侵略性的種類之一。當處于未充氣狀態時,氣囊會從前額垂到兩眼之間。雄性冠海豹在一個鼻孔里還有第二個氣囊,可以通過關閉另一個鼻孔的瓣膜來充氣。
與雄性相比,雌性冠海豹外貌不那么有特色,個頭也較小:它們差不多有2.1m長,200kg重,雄性則平均長2.4m,重約300kg。然而,雌雄兩性都擁有銀色的皮毛,其中夾雜著不規則的暗斑。與其他半水生的哺乳動物一樣,它們擁有光滑的帶爪的蹼,可以有效地在水中移動,而在陸地上就比較笨拙了。
冠海豹經常遷徙,它們會用整年的時間,獨自穿越相當長的距離,以尋找食物。僅在深冬和夏季會回到繁殖地,前者是為了交配,后者則為了換毛。它們在水中獵食,能夠下潛到61m深,并在水下停留將近1小時。它們的日常食譜根據所在地不同而變化,但通常包括魚類、烏賊、蝦類、章魚和蚌類。
在出生后的前14個月里,冠海豹幼仔皮毛是藍灰色,腹部則是蒼白色,這使它們獲得了“藍背”的昵稱。它們的哺乳期平均僅4天,在哺乳動物中是最短的。然而,在此期間,幼仔的體重幾乎會增加一倍,每天增重達4.5~6.8kg——它們的母乳的脂肪比例高達60%~70%。
封面圖片源自Riverside Natural History一書。
譯者序
我曾經涉獵過數以百計的程序設計書籍,從Programming Ruby這樣的語言經典,到《代碼大全》這樣的風格指南。但在接觸本書之前,從未想到過編程書可以像這樣別具一格、妙趣橫生。我也曾做過多種不同類型的程序設計工作,從編程競賽中的算法題,到大型的Web項目,抑或是電子游戲。但在接觸本書之前,從未想到過程序設計可以像書中這樣,用來對我們日常生活的方方面面進行探索。
當你遇到一層辦公樓中衛生間的安排問題時,你可能想到用數學建模方法去解決。當你想要驗證亞當·斯密的市場經濟運行規律是否有效時,你可能會想到通過理論和事實進行推演。當你想要測定自己的心跳時,你可能會用手表加數數的方法,或是求助于精密的電子儀器。但你是否想過,這些問題可以通過簡單的編程工作,得到相當有效的解決?本書的作者將帶領你借助Ruby和R這兩種流行的、強大的(而且是免費的)編程語言,開啟一段激動人心的探索之旅,尋求諸如前述的、不同領域問題的答案,并發現其中的規律和模式。在閱讀和實踐書中所講的內容時,你不僅僅是一名程序員,更像是一位探險家(作者本人在引言中也如是說),向看似平淡無奇的,卻充滿未知的世界發起挑戰!
作為讀者,你不需要有過任何的編程經驗,作者將帶你從頭開始學習Ruby和R語言的基本知識和特性。盡管由于篇幅所限,本書不能涵蓋兩種語言的一切內容(要完成這一任務,本書篇幅再翻幾倍也不見得夠),但已經足夠你了解它們的精華所在。而在后面的探索之旅中,你更會學到從發現問題、建模、模擬,到收集和處理數據、分析結果、得出結論這一整套的研究事物的方法。你將學會用不同的視角來看待世界,并發現其中的規律和樂趣,成為一名名副其實的探索者。
非常高興能與我的好朋友劉熙合作,承擔本書的翻譯工作。特別是有幸將這樣一本精彩的書籍作為我的首本譯著,實在是激動人心。這里要對原作者Sau Sheong Chang博士表達深深的敬意,并對給予我們這一美妙工作機會的人民郵電出版社,特別是責任編輯楊海玲女士,表示誠摯的感謝。
由于水平所限,譯文中如有疏漏及不足之處,還請不吝批評指正。歡迎隨時聯系我們,我的郵箱:MerryMoney88@gmail.com。
真的很懷念對照著iPad上的電子版原著,在我相伴多年的HP(恰好是作者就職的公司)筆記本上一句句敲打和改訂譯文的那些日日夜夜。
錢昊
2012年11月8日于海淀朱房
譯者簡介
錢昊 畢業于北京大學計算機系,從小熱愛程序設計,熟悉多種編程語言,曾有過使用Ruby進行大型Web項目開發的經驗,并對翻譯工作有著濃厚的興趣。
劉熙 在北京大學元培學院完成本科學習后,又進入北京大學工學院攻讀碩士學位,同時在微軟Bing部門工作,主攻數據挖掘方向,已有過兩本譯著。
兩人從小學奧數班就相識,一路同學到中學、大學,志趣相投。本書的翻譯堪稱兩人一次重要而難忘的合作經歷。
本文僅用于學習和交流目的,不代表異步社區觀點。非商業轉載請注明作譯者、出處,并保留本文的原始鏈接。
前言
嗨!探險家們!
要用一些大無畏的探險家——比如斐迪南·麥哲倫(Ferdinand Magellan)、詹姆斯·庫克(James Cook)、羅爾德·阿蒙森(Roald Amundsen)——和我這樣的人比較,是一件挺困難的事。這些探險家乘風破浪,披荊斬棘,直面未知的險境,去發現新的世界(至少對他們當時所處的文明來講算“新”)。而迄今為止,我運動方面最大的成就大概就是完成了10公里的慈善短程馬拉松——而且是用走的。
過去的那些探索者在發現了未知的地區、宣示所有權的時候,可真是風光。克里斯托弗·哥倫布(Christopher Columbus)只需要從歐洲一直向西航行,就能發現兩塊完整的大陸。可我們今天的選擇就少多了。地球上已經沒有多少未被發現的大陸板塊了,即使是海洋中最深的地方——馬里亞納海溝,也已經被人征服了。
但是,我的確也是一位探險家,而且將要閱讀這本書的你也是。盡管已知的現實世界已經被人征服得差不多了(見圖0-1),未知的世界卻依然傲視著我們。
我們大家生來都具有一種為這身邊的世界感到吃驚而詫異的感覺。但是,隨著我們漸漸成長,漸漸厭倦,很多人失去了這種感覺。我認為,這其中的部分原因是,我們其實對周遭的世界理解得還不夠,因此也就漠不關心。按一下遙控器,電視機就開了——這是怎么做到的呢?當我們第一次提這樣的問題時,很可能會招來白眼,或是閃一邊兒去的手勢。只要能看到下一季的《美國偶像》,誰在乎這種問題呢?于是別人的這種反應也就很快變成了我們自己的反應。
那么,在這本書里,我將帶你走過蜿蜒的路途,找回那個原始而本真的你。我們會再次發現魔力的存在。在全書結束的時候,很有可能你將從我們停下的地方繼續進發,繼續探索你自己的征程。
數據,數據,遍地都是數據
在我們生命的每一分每一秒,我們都深陷于數據的泥沼之中。我這話并不是隱喻,也絕非在單純地夸大大數據的存在。
其實,我們周遭的數據極其之多,我們的眼睛已經進化得能夠在每毫秒這么短的時間內切斷一會兒與環境的聯系。在一種稱作“掃視掩蔽”的現象中,隨著眼球的快速轉動(即掃視),大腦會暫停一會兒,以消除投射到視網膜上的模糊圖像。模糊圖像的用處不太大,所以大腦就丟棄它們,使我們在掃視時有效地失明(我們自己意識不到)。
我們今天處理數據的方式和這種掃視掩蔽效應有很多相似之處。數據來得實在太快太頻繁,我們常常將它們屏蔽掉。周圍有很多數據可以供我們提取并分析,找出問題的答案,但問題就在于,應該怎么做到。
在(遙遠的)過去,擁有利用數據與學識來破解秘密的技巧的總是那些天才,只有運氣好的極少數人才有機會偶然發現答案。現在再也不是這樣了。盡管智力仍然是一個先決條件,但由于計算機和程序設計的出現,如今,在提煉信息的道路上,我們可以從無聊、煩瑣、重復性的數據處理中脫離出來了。
只是,我們還并沒有做到。
無論如何,至少對于大多數人來說,的確沒有。只有科學家和數學家們例外,他們早就緊緊掌握了能使他們更高效地工作的工具。如果你是來自上述這兩大人群,那你可能已經充分利用了計算機的威力。
可是,對于程序員和其他很多人來說,他們最開始編寫計算機程序只不過是為了給業務提供工具,或者是輔助改善業務流程。所有這些,都是為了利用計算機來降低成本,增加收入,提高效率。在很多職業程序員看來,編程只是個差使,枯燥乏味,不用動腦,養家糊口而已。我們其實已經忘記,在探索發現中,計算機的前景多么廣闊,程序設計的威力多么強大。
探索世界
這本書正是為了要試圖找回發現的美妙和神奇。我希望這本書能夠揭示一些你之前不知道或不了解的事情。我還希望它能夠幫助你,通過我們每天觸手可及的世界去發現新大陸。最后,我更希望,你能夠通過它獲取探索的能力,用程序設計和數據分析去發現新鮮事物。
盡管在這本書里,我們所要探索的仍是現實世界,但更多情況下并不是這樣。要在位和字節之間探索整個世界有點困難。因此,如果我們無法探索我們所生存的這個世界,那我們就要嘗試其他的——換言之,我們要使用模擬(simulation)。
模擬是用來探索我們無法控制的事物的一種好辦法。我們每時每刻都在做著模擬。在我們小的時候,我們自己總是創造出假想的世界并且活在其中。借由此,我們也能夠更好地去理解現實世界。我們至今仍然在做著模擬,通過神奇的電視(尤其是電視連續劇)和電影——我們會把熒幕上的角色視作真實的。且不論是好是壞,至少像電視機這樣的模擬手段的確影響了我們的現實生活,甚至還會影響我們的夢境。例如,由美國心理學會所開展的一項調查顯示,60多歲的人中(在彩色電視機尚未流行的年代成長起來),約20%會回想起他們做過的夢是鮮亮生動的。而30歲以下的人中,有80%確信他們的夢境是彩色的1。
在這本書里,我們會通過模擬來創建實驗,分離變量,并提出假設來解釋實驗結果。對于我所描述的實驗,或者我所提出的假設,你可能同意,也可能反對,但這些都不重要。通過我們共同走過的這段旅程,我真正希望你獲得的,是能認識到,編程所能夠解決的遠遠不止商業活動而已。我希望能夠達到的是,你最終可以設計出你自己的實驗,實現它們,并發現你自己的新世界。
收拾行囊
我們將通過程序設計和數據分析來進行這場宏偉的探險。那么,你需要準備些什么呢?當然要準備些工具了,這也正是接下來兩章的主題。可用的工具并不僅有這些,但在這本書中我們只用這些。
我們要用到的這兩種工具就是Ruby和R。我之所以選擇它們,是有著特定的目的的。一方面,Ruby很好學,也很好讀,特別適合用易讀的代碼來解釋一些概念。我會用Ruby來進行模擬和預處理,得到數據。另一方面,R則見長于分析數據,以及生成可視化的圖表。
盡管要欣賞這本書的話,你并不需要一定會使用Ruby和R進行編程,但我會假定你具備一些對編程的基本理解。具體地說,我會假定你修過計算機科學或相關方面的課程,或者是使用過任何一種編程語言進行過一些簡單的程序設計。
在這兩章之后,其他每一章都或多或少是相對獨立的。每一章都會就一個思想開展探索,從對現存問題的理解開始,接下來嘗試去回答它,通過模擬或一些處理來獲取數據,然后就要分析數據,并基于分析得出一些結論。
要探索的思想來自于不同的領域,從經濟學到進化論,從醫療保健到工作環境設計(具體場景是找出辦公室衛生間的合理數量)。某些思想顯得很宏大,而某些思想則非常私人化。之所以選擇如此多元的思想,正是為了展示,對探索可能性的限制其實只來自于我們自己創造力的貧乏。
每一章在一開始的時候都顯得規模不大,但我們會逐層地增加復雜性,以將其核心的思想具體化。實驗會圍繞著基本思想進行,而最終所得出的假設、結論和結果都具有一定的偶然性。比如,對于我的結論和對結果的闡釋,你可能同意或者反對。但就這本書而言,探索的過程要比結果更為重要。
一切就緒,讓我們就此出發!祝愿你愉快地體驗接下來的兩章,并享受之后的探索——勇敢地探索吧!
本書的排版約定
本書使用如下排版約定。
- 楷體:用以表示新術語。
- 等寬代碼字體:用于程序清單,以及段落中引用的程序元素,如變量或函數名、數據庫、數據類型、環境變量、語句和關鍵字。
- 加粗的等寬代碼字體:展示命令或其他應該由用戶輸入的文本,也用于代碼清單中強調的部分。
- 斜的等寬代碼字體:展示應該用用戶所提供的值或根據上下文確定的值來替換的文本。
這個圖標表示一個提示、建議或者一般的注記。
這個圖標表示一個警告或警示。
代碼示例的使用
本書的目標是幫助你完成工作。一般而言,你可以在自己的程序和文檔中使用本書中的代碼,如果你要復制的不是核心代碼,則無須取得我們的許可。例如,你可以在程序中使用本書中的多個代碼塊,無須獲取我們許可。但是,要銷售或分發來源于O’Reilly圖書中的示例的光盤則需要取得我們的許可。通過引用本書中的示例代碼來回答問題時,不需要事先獲得我們的許可。但是,如果你的產品文檔中融合了本書中的大量示例代碼,則需要取得我們的許可。
在引用本書中的代碼示例時,如果能列出本書的屬性信息是最好不過了。屬性信息通常包括書名、作者、出版社和ISBN。例如:“Exploring Everyday Things with R and Ruby by Sau Sheong Chang (O’Reilly). Copyright 2012 Sau Sheong Chang, 978-1-449-31515-3.”
在使用書中的代碼時,如果不確定是否屬于合理使用,或是否超出了我們的許可,請通過permissions@oreilly.com與我們聯系。
我們的聯系方式
如果你想就本書發表評論或有任何疑問,敬請聯系出版社。
美國:
O’Reilly Media Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中國:
北京市西城區西直門南大街2號成銘大廈C座807室(100035)
奧萊利技術咨詢(北京)有限公司
我們還為本書建立了一個網頁,其中包含了勘誤表、示例和其他額外的信息。你可以通過如下地址訪問該網頁:
http://oreil.ly/everyday-things-r-ruby
關于本書的技術性問題或建議,請發郵件到:
bookquestions@oreilly.com
歡迎登錄我們的網站(http://www.oreilly.com),查看更多我們的書籍、課程、會議和最新動態等信息。
我們的其他聯系方式如下。
Facebook:http://facebook.com/oreilly
Twitter:http://twitter.com/oreillymedia
YouTube:http://www.youtube.com/oreillymedia
致謝
在這部分里,我要感謝所有幫助過我的人,正是因為有了他們的幫助才使我能夠創作出你現在手里捧著的這本書。多年來我了解到,寫書絕不是一項僅靠作者就能夠完成的工作,而需要作者、專業的團隊、一批審閱人和支持者共同協作。我想感謝以下所有人,排名不分先后。
- 感謝Mike Hendrickson能夠接受這樣一本與眾不同的程序設計圖書。我最初遞交撰寫這本書的計劃書時,其實只是誤打誤撞,沒有想到竟然真的會被接受。
- 感謝Andy Oram如此耐心地對待一位初次與O’Reilly合作的作者,他安排了一次次的Skype通話,跨越了半個地球。他每周二都早早地起床與我通話交流。
- 感謝Kristen Borg、Rachel Monaghan和整個編輯團隊,他們為這本書做出了極其專業、了不起的工作。
- 感謝Jeremy Leipzig、Ivan Tan、Patrick Haller和Judith Myerson,他們幫助審閱了這本書,提出了非常好的建議。尤其是Patrick Haller,我在郵件里跟他糾纏不休地討論他對我的R腳本所提出的建議。謝謝你,Patrick!
- 感謝Rully Santosa、Chen Way Yen、Ng Tze Yang、Kelvin Teh、George Goh和其他所有惠普實驗室新加坡應用研究團隊的同仁。他們給我提供了無數的建議,和他們的討論激發了我無數的新思想。尤其要感謝Rully、Way Yen和George對第6章的反饋!
- 感謝Ruby社區,尤其是Singapore Ruby Brigade,我在其中遇到很多好朋友,我們在利用Ruby探索世界方面都有著共同的興趣。這是個非常棒的社區,我非常喜歡高效人士Andy Croll組織的年度RedDotRuby大會。
最后,我想把這本書獻給我的家人,無論我做什么,他們都是我的靈感和動力之源。謝謝我的愛妻Wooi Ying再一次(已經是第三次了)地耐心對待我的工作,感謝她理解我為什么想要搞懂所有事物。謝謝我將滿十歲的兒子Kai Wen,我希望這本書能夠激勵你成為一名眼界開闊的探險家,正如我自己的一生一樣。
1 Okada, Hitoshi, Kazuo Mastsuoka, and Takao Hatakeyama, “Life Span Differences in Color Dreaming”, Dreaming 21, no 3.(2011), 213-220.
本文僅用于學習和交流目的,不代表異步社區觀點。非商業轉載請注明作譯者、出處,并保留本文的原始鏈接。
目錄
第1章 握住探險之鞭——認識Ruby
1.1 Ruby
1.2 Shoes
1.3 小結
第2章 走進《黑客帝國》—認識R
第3章 探討辦公室與衛生間問題
第4章 當一回經濟學家
第5章 對自己的電子郵件進行挖掘
第6章 測一測我們的心臟
第7章 模擬結群飛行的鳥
第8章 是什么讓世界運行不止
總結
以上是生活随笔為你收集整理的《R和Ruby数据分析之旅》目录—导读的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea主题包下载(推荐)
- 下一篇: 《音乐达人秀:Adobe Auditio