R和Ruby數據分析之旅

R和Ruby數據分析之旅

2.1r的簡介 7.1boids的由來 7.3roid

基本信息

原書名: Exploring Everyday Things with R and Ruby: Learning About Everyday Things
原出版社: O'Reilly Media; 1 edition
作者: (新加坡)Sau Sheong Chang

譯者: 錢昊 劉熙
出版社:人民郵電出版社
ISBN:9787115303707
上架時間:2013-3-14
出版日期:2013 年3月
開本:16開
頁碼:204
版次:1-1
所屬分類:計算機 > 軟體與程式設計 > Rails/Ruby
編輯推薦
編程之眼看世界!一本十分特別的、充滿趣味和奇思妙想的編程書!

內容簡介

書籍
計算機書籍
《r和ruby數據分析之旅》是一本十分特別、充滿趣味和奇思妙想的編程及數據分析的書籍。在作者的帶領下,讀者將學會使用ruby和r這兩個強有力的編程工具,對現實生活中的一些問題進行探索,嘗試發現一些事物運行的模式、規律,通過數據的獲取、建模和分析找出解決方案。
《r和ruby數據分析之旅》開篇分別對ruby和r語言做了從零開始、簡明扼要的介紹,包括安裝、開發環境的使用、基本語法和重要特性。這為後面的探究工作打下堅實的基礎。
探索之旅包括6個部分,其中包括處理辦公室的衛生間安排問題,考查簡單的市場經濟體系的運行狀況,挖掘特定用戶的電子郵件行為模式,用音頻和視頻兩種不同方法來測定自己的心率,模擬鳥兒結群飛行的場景,最後通過人工營造一個具備進食、生殖和進化特性的種群,來看其在現實世界中的一些影子。
閱讀本書,讀者不但能學到ruby和r的基本知識和技巧,更能學會如何藉助編程來對現實生活中的問題進行建模和模擬,特別是怎樣對數據進行集成、處理和分析。相信讀過本書之後,讀者將有能力和意願去開啟自己的探索和發現之旅。

作譯者

Sau Sheong Chang是新加坡惠普實驗室的套用研究主管,已經從事軟體開發工作17年,主要專注於與雲計算和數據相關的系統。他在當地開發者社區頗有名望,並且作為演講者活躍在眾多技術大會上。在本書之前,他出版過Ruby on Rails Mashup Projects》和《Cloning Internet Applications with Ruby兩部著作。
錢昊 畢業於北京大學計算機系,從小熱愛程式設計,熟悉多種程式語言,曾有過使用Ruby進行大型Web項目開發的經驗,並對翻譯工作有著濃厚的興趣。

目錄

《r和ruby數據分析之旅》
第1章 握住探險之鞭—認識ruby
1.1 ruby
1.1.1 為什麼用ruby
1.1.2 安裝ruby
1.1.3 運行ruby
1.1.4 引用外部庫
1.1.5 ruby基礎
1.1.6 一切皆對象
1.2 shoes
1.2.1 何為shoes
1.2.2 五彩的“鞋子”(shoes)
1.2.3 安裝shoes
1.2.4 編寫shoes程式
1.3 小結
第2章 走進《黑客帝國》—認識r
2.1 r的簡介
2.2 使用r
2.2.1 r控制台
2.2.2 源檔案與命令行
.2.2.3 程式包
2.3 r編程
2.3.1 變數和函式
2.3.2 條件語句與循環
2.3.3 數據結構
2.3.4 導入數據
2.4 作圖
2.4.1 基本繪圖
2.4.2 ggplot2簡介
2.5 小結
第3章 探討辦公室與衛生間問題
3.1 簡單的情形
3.2 表示衛生間等事物
3.3 初次模擬
3.4 解釋數據
3.5 第二次模擬
3.6 第三次模擬
3.7 最後一個模擬
3.8 小結
第4章 當一回經濟學家
4.1 看不見的手
4.2 一個簡單的市場經濟體系
4.2.1 生產者
4.2.2 消費者
4.2.3 一些使程式簡化的方法
4.2.4 模擬
4.2.5 分析模擬結果
4.3 價格決定的資源分配
4.3.1 生產者
4.3.2 消費者
4.3.3 市場
4.3.4 模擬
4.3.5 分析第二個模擬的結果
4.3.6 價格控制
4.4 小結
第5章 對自己的電子郵件進行挖掘
5.1 思想
5.2 抓取和解析
5.3 對電子郵件進行挖掘
5.3.1 每月同一天的郵件數量
5.3.2 郵件挖掘者
5.3.3 每周同一天的郵件數量
5.3.4 每月的郵件數量
5.3.5 一天各小時的郵件數量
5.3.6 互動
5.3.7 互動中的比較
5.4 文本挖掘
5.5 小結
第6章 測一測我們的心臟
6.1 跳動的心臟
6.2 聽診
6.2.1 自製數字聽診器
6.2.2 從聲音中提取數據
6.2.3 生成心音波形
6.2.4 找出心率
6.3 血氧定量法
6.3.1 自製脈搏血氧計
6.3.2 從視頻中提取信息
6.3.3 生成心跳波形並計算心率
6.4 小結
第7章 模擬結群飛行的鳥
7.1 boids的由來
7.2 模擬
7.3 roid
7.4 boid群的規則
7.5 輔助規則
7.6 規則的變更
7.7 繞圈
7.8 加入障礙物
7.9 小結
第8章 是什麼讓世界運行不止
8.1 生活很美好
8.2 金錢
8.3 性別
8.3.1 生與死
8.3.2 變化
8.4 進化
8.4.1 我們將做哪些改變
8.4.2 實現
8.5 小結
關於作者
封面介紹

譯者序

我曾經涉獵過數以百計的程式設計書籍,從Programming Ruby這樣的語言經典,到《代碼大全》這樣的風格指南。但在接觸本書之前,從未想到過編程書可以像這樣別具一格、妙趣橫生。我也曾做過多種不同類型的程式設計工作,從編程競賽中的算法題,到大型的Web項目,抑或是電子遊戲。但在接觸本書之前,從未想到過程式設計可以像書中這樣,用來對我們日常生活的方方面面進行探索。
當你遇到一層辦公樓中衛生間的安排問題時,你可能想到用數學建模方法去解決。當你想要驗證亞當·斯密的市場經濟運行規律是否有效時,你可能會想到通過理論和事實進行推演。當你想要測定自己的心跳時,你可能會用手錶加數數的方法,或是求助於精密的電子儀器。但你是否想過,這些問題可以通過簡單的編程工作,得到相當有效的解決?本書的作者將帶領你藉助Ruby和R這兩種流行的、強大的(而且是免費的)程式語言,開啟一段激動人心的探索之旅,尋求諸如前述的、不同領域問題的答案,並發現其中的規律和模式。在閱讀和實踐書中所講的內容時,你不僅僅是一名程式設計師,更像是一位探險家(作者本人在引言中也如是說),向看似平淡無奇的,卻充滿未知的世界發起挑戰!
作為讀者,你不需要有過任何的編程經驗,作者將帶你從頭開始學習Ruby和R語言的基本知識和特性。儘管由於篇幅所限,本書不能涵蓋兩種語言的一切內容(要完成這一任務,本書篇幅再翻幾倍也不見得夠),但已經足夠你了解它們的精華所在。而在後面的探索之旅中,你更會學到從發現問題、建模、模擬,到收集和處理數據、分析結果、得出結論這一整套的研究事物的方法。你將學會用不同的視角來看待世界,並發現其中的規律和樂趣,成為一名名副其實的探索者。
非常高興能與我的好朋友劉熙合作,承擔本書的翻譯工作。特別是有幸將這樣一本精彩的書籍作為我的首本譯著,實在是激動人心。這裡要對原作者Sau Sheong Chang博士表達深深的敬意,並對給予我們這一美妙工作機會的人民郵電出版社,特別是責任編輯楊海玲女士,表示誠摯的感謝。
真的很懷念對照著iPad上的電子版原著,在我相伴多年的HP(恰好是作者就職的公司)筆記本上一句句敲打和改訂譯文的那些日日夜夜。
——錢昊
2012年11月8日于海淀朱房

前言

嗨!探險家們!
要用一些大無畏的探險家—比如斐迪南·麥哲倫(Ferdinand Magellan)、詹姆斯·庫克(James Cook)、羅爾德·阿蒙森(Roald Amundsen)—和我這樣的人比較,是一件挺困難的事。這些探險家乘風破浪,披荊斬棘,直面未知的險境,去發現新的世界(至少對他們當時所處的文明來講算“新”)。而迄今為止,我運動方面最大的成就大概就是完成了10公里的慈善短程馬拉松—而且是用走的。
過去的那些探索者在發現了未知的地區、宣示所有權的時候,可真是風光。克里斯托弗·哥倫布(Christopher Columbus)只需要從歐洲一直向西航行,就能發現兩塊完整的大陸。可我們今天的選擇就少多了。地球上已經沒有多少未被發現的大陸板塊了,即使是海洋中最深的地方—馬里亞納海溝,也已經被人征服了。
但是,我的確也是一位探險家,而且將要閱讀這本書的你也是。儘管已知的現實世界已經被人征服得差不多了(見圖0-1),未知的世界卻依然傲視著我們。
我們大家生來都具有一種為這身邊的世界感到吃驚而詫異的感覺。但是,隨著我們漸漸成長,漸漸厭倦,很多人失去了這種感覺。我認為,這其中的部分原因是,我們其實對周遭的世界理解得還不夠,因此也就漠不關心。按一下遙控器,電視機就開了—這是怎么做到的呢?當我們第一次提這樣的問題時,很可能會招來白眼,或是閃一邊兒去的手勢。只要能看到下一季的《美國偶像》,誰在乎這種問題呢?於是別人的這種反應也就很快變成了我們自己的反應。
那么,在這本書里,我將帶你走過蜿蜒的路途,找回那個原始而本真的你。我們會再次發現魔力的存在。在全書結束的時候,很有可能你將從我們停下的地方繼續進發,繼續探索你自己的征程。
數據,數據,遍地都是數據
在我們生命的每一分每一秒,我們都深陷於數據的泥沼之中。我這話並不是隱喻,也絕非在單純地誇大大數據的存在。
其實,我們周遭的數據極其之多,我們的眼睛已經進化得能夠在每毫秒這么短的時間內切斷一會兒與環境的聯繫。在一種稱作“掃視掩蔽”的現象中,隨著眼球的快速轉動(即掃視),大腦會暫停一會兒,以消除投射到視網膜上的模糊圖像。模糊圖像的用處不太大,所以大腦就丟棄它們,使我們在掃視時有效地失明(我們自己意識不到)。
我們今天處理數據的方式和這種掃視掩蔽效應有很多相似之處。數據來得實在太快太頻繁,我們常常將它們禁止掉。周圍有很多數據可以供我們提取並分析,找出問題的答案,但問題就在於,應該怎么做到。
在(遙遠的)過去,擁有利用數據與學識來破解秘密的技巧的總是那些天才,只有運氣好的極少數人才有機會偶然發現答案。現在再也不是這樣了。儘管智力仍然是一個先決條件,但由於計算機和程式設計的出現,如今,在提煉信息的道路上,我們可以從無聊、繁瑣、重複性的數據處理中脫離出來了。
只是,我們還並沒有做到。
無論如何,至少對於大多數人來說,的確沒有。只有科學家和數學家們例外,他們早就緊緊掌握了能使他們更高效地工作的工具。如果你是來自上述這兩大人群,那你可能已經充分利用了計算機的威力。
可是,對於程式設計師和其他很多人來說,他們最開始編寫電腦程式只不過是為了給業務提供工具,或者是輔助改善業務流程。所有這些,都是為了利用計算機來降低成本,增加收入,提高效率。在很多職業程式設計師看來,編程只是個差使,枯燥乏味,不用動腦,養家餬口而已。我們其實已經忘記,在探索發現中,計算機的前景多么廣闊,程式設計的威力多么強大。
探索世界
這本書正是為了要試圖找回發現的美妙和神奇。我希望這本書能夠揭示一些你之前不知道或不了解的事情。我還希望它能夠幫助你,通過我們每天觸手可及的世界去發現新大陸。最後,我更希望,你能夠通過它獲取探索的能力,用程式設計和數據分析去發現新鮮事物。
儘管在這本書里,我們所要探索的仍是現實世界,但更多情況下並不是這樣。要在位和位元組之間探索整個世界有點困難。因此,如果我們無法探索我們所生存的這個世界,那我們就要嘗試其他的—換言之,我們要使用模擬(simulation)。
模擬是用來探索我們無法控制的事物的一種好辦法。我們每時每刻都在做著模擬。在我們小的時候,我們自己總是創造出假想的世界並且活在其中。藉由此,我們也能夠更好地去理解現實世界。我們至今仍然在做著模擬,通過神奇的電視(尤其是電視連續劇)和電影—我們會把熒幕上的角色視作真實的。且不論是好是壞,至少像電視機這樣的模擬手段的確影響了我們的現實生活,甚至還會影響我們的夢境。例如,由美國心理學會所開展的一項調查顯示,60多歲的人中(在彩色電視機尚未流行的年代成長起來),約20%會回想起他們做過的夢是鮮亮生動的。而30歲以下的人中,有80%確信他們的夢境是彩色的 。
在這本書里,我們會通過模擬來創建實驗,分離變數,並提出假設來解釋實驗結果。對於我所描述的實驗,或者我所提出的假設,你可能同意,也可能反對,但這些都不重要。通過我們共同走過的這段旅程,我真正希望你獲得的,是能認識到,編程所能夠解決的遠遠不止商業活動而已。我希望能夠達到的是,你最終可以設計出你自己的實驗,實現它們,並發現你自己的新世界。
收拾行囊
. 我們將通過程式設計和數據分析來進行這場宏偉的探險。那么,你需要準備些什麼呢?當然要準備些工具了,這也正是接下來兩章的主題。可用的工具並不僅有這些,但在這本書中我們只用這些。
我們要用到的這兩種工具就是Ruby和R。我之所以選擇它們,是有著特定的目的的。一方面,Ruby很好學,也很好讀,特別適合用易讀的代碼來解釋一些概念。我會用Ruby來進行模擬和預處理,得到數據。另一方面,R則見長於分析數據,以及生成可視化的圖表。
儘管要欣賞這本書的話,你並不需要一定會使用Ruby和R進行編程,但我會假定你具備一些對編程的基本理解。具體地說,我會假定你修過計算機科學或相關方面的課程,或者是使用過任何一種程式語言進行過一些簡單的程式設計。
在這兩章之後,其他每一章都或多或少是相對獨立的。每一章都會就一個思想開展探索,從對現存問題的理解開始,接下來嘗試去回答它,通過模擬或一些處理來獲取數據,然後就要分析數據,並基於分析得出一些結論。
要探索的思想來自於不同的領域,從經濟學到進化論,從醫療保健到工作環境設計(具體場景是找出辦公室衛生間的合理數量)。某些思想顯得很宏大,而某些思想則非常私人化。之所以選擇如此多元的思想,正是為了展示,對探索可能性的限制其實只來自於我們自己創造力的貧乏。
每一章在一開始的時候都顯得規模不大,但我們會逐層地增加複雜性,以將其核心的思想具體化。實驗會圍繞著基本思想進行,而最終所得出的假設、結論和結果都具有一定的偶然性。比如,對於我的結論和對結果的闡釋,你可能同意或者反對。但就這本書而言,探索的過程要比結果更為重要。
一切就緒,讓我們就此出發!祝願你愉快地體驗接下來的兩章,並享受之後的探索—勇敢地探索吧!

媒體評論

“這是每一位有好奇心的黑客的夢想!它會引導你把令人生厭的開發項目變得妙趣橫生,同時學會R和Ruby語言。這本書比我多年來看過的其他任何一本都更能抓住真正的黑客的心。”

相關詞條

熱門詞條

聯絡我們