第一部分 項目1:非均勻骰子
計算機讓我們得以用過去的科學家望塵莫及的速度收集、處理和可視化數據。簡而言之,計算機提供了進行科學研究的超能力。但是,為了充分挖掘和使用這份超能力,你需要掌握一些必要的編程技術。
作為一名熟悉編程的數據科學家,你將提升以下幾個方面的能力。
· 記住(存儲)整個數據集
· 按需獲取數據
· 執行包含大量數據的復雜運算
· 完成重復性任務時不會粗心大意,也不會感到厭煩
計算機在處理這些任務時具有速度優勢,并且基本不會出錯,因此你可以將時間花在你的大腦更擅長的任務上:決策和思考。
這聽起來絕對令人興奮,不是嗎?的確如此!那就讓我們開始吧。
上大學時,我偶爾會做白日夢,想著自己能靠學過的一點統計學知識去拉斯維加斯的賭場大贏一把。如果這是你想從事數據科學工作的原因,我勸你還是坐下來先靜一靜,聽我告訴你一個壞消息:即便是統計學家,長期來看在賭場上也占不到便宜。這是因為賭場里每一個游戲的設計都是對賭場有利的。如果想通過賭博長期穩定地賺錢,也有一個空可鉆,那就是自己開一家賭場。
不管你信不信,R可以幫助你實現開賭場的夢想。通過閱讀和學習本書,你將學會用R做三個虛擬的項目:一對可以用來生成隨機數字的骰子,一副可以用來發牌和洗牌的撲克,以及一臺模擬真實的視頻彩票終端機的老虎機。在完成這三個項目之后,你所要做的就是購置一批顯示器,申請一個銀行賬戶(也許還得申請一些必需的行政許可證),然后就可以從事賭場生意了。至于具體如何操作,你就自己搞定吧。
這些項目十分簡單,但內涵很深??梢赃@樣說,認認真真地跟著本書完成全部三個項目之后,你將掌握數據科學家所必需的專業技能。具體來說,你將學會如何將數據存儲到計算機內存中,如何訪問計算機內存中的數據,以及如何在必要的時候對內存中的數據值進行轉換。你還將學會如何用R編寫自己的程序,并將其用于分析數據和運行模擬。
模擬一臺老虎機(或者一對骰子、一副撲克)看似非常無聊,但是不妨換個角度這樣想:老虎機其實代表了一個程序。如果你能模擬這樣一個程序,也將能模擬其他不同類型的程序,比如自助抽樣法的程序、馬爾可夫鏈蒙特卡洛模擬的程序,或者是其他一些與數據分析有關的程序。此外,這三個項目還為學習R編程的所有核心概念提供了實例,這些概念包括對象、數據類型、類、記號體系、函數、環境、if樹、循環以及向量化等。第一個項目將教你R編程的基本技能,之后學習接下來的項目就輕松了。
你的第一個任務非常簡單:組合一些R程序以模擬賭桌上的一對骰子。之后,為了讓這個項目更加有趣,我們會給骰子的不同面分配不同的權重以生成不均勻的骰子。
在這個項目中,你將學到以下技能。
· 使用R和RStudio的用戶界面
· 運行R命令
· 創建R對象
· 編寫自己的R函數和腳本
· 加載并使用R包
· 生成隨機樣本
· 快速制圖
· 在需要幫助時及時獲取幫助
在一個項目中介紹這么多知識點似乎有點急功近利了。其實不然,這個項目的設計初衷就是要帶領你大致領略一下R語言。在之后的項目中,我們還會就這些知識點進行更加深入的研究和探討。
在使用R和RStudio之前,你需要先安裝這兩個工具。它們都是免費的,你可以在網上輕松地下載安裝。附錄A中有安裝這兩個工具的詳細教程。如果已經安裝好了,那么就打開計算機中的RStudio,準備好進入下一章吧。
- 數據庫系統原理及MySQL應用教程(第2版)
- Java逍遙游記
- Node.js Design Patterns
- Learning Spring 5.0
- Learning Linux Binary Analysis
- 精通API架構:設計、運維與演進
- 編寫高質量代碼:改善Objective-C程序的61個建議
- Hands-On Full Stack Development with Spring Boot 2.0 and React
- 深度探索Go語言:對象模型與runtime的原理特性及應用
- 智能手機故障檢測與維修從入門到精通
- Pandas 1.x Cookbook
- 可視化H5頁面設計與制作:Mugeda標準教程
- Windows 10 for Enterprise Administrators
- 深入理解MySQL主從原理
- Java與Android移動應用開發:技術、方法與實踐