2015年6月7日 星期日

Coursera The Data Scientist’s Toolbox Week2 心得筆記

數據科學家的工具箱
約翰霍普金斯大學 公共衛生學院
The Data Scientist’s Toolbox
Johns Hopkins Bloomberg School of Public Health

Week 2
第二週學習筆記

2015年6月1日 - 2015年6月29日

Video Lectures
Week 2 (50:50)

Tips from Coursera Users - Optional Video (3:53)

Command Line Interface (16:04)

Windows: Git Bash (除非熟悉Git,不然安裝的選項一律默認就好。Git Bash只有在Windows系統上可行!)
Mac/Linux: Terminal

/ (root):根目錄
~ (home):主目錄

CLI Commands
  • command 命令
  • flags 參數選項
  • arguments 執行對象

Summary of Commands
  • pwd (print working directory):輸出目前的工作目錄
  • clear:清除視窗
  • ls (list):列出所在工作目錄中的所有子目錄
  • ls -a:列出所有隱藏和未隱藏的文件夾
  • ls -al:顯示這個文件夾的詳細訊息
  • cd "目錄位址" (change directory):更改工作目錄,沒有輸入argument會預設主目錄
  • cd .. :進入上一級目錄
  • mkdir "目錄名稱" (make directory):創建目錄
  • touch "文件名稱":創建一個空文件
  • cp "文件名稱" "複製到哪個目錄" (copy):複製文件
  • cp -r "目錄名稱" "複製到哪個目錄" (copy):複製目錄
  • rm "文件名稱" (remove):刪除文件
  • rm -r "目錄名稱" (remove)刪除目錄
  • mv "文件名稱" "移動到哪個目錄" (move):移動文件
  • mv "文件名稱" "文件新名稱" (rename):更改文件名稱
  • echo "輸出值":列印出你的參數值
$ echo Hello World!
Hello World!
  • date:列印日期
$ date
Sun Jun  7 13:00:00     2015

Introduction to Git (4:49)

Version Control


版本控制系統是按時間記錄你對某個、某組文件所做的修改,方便你找回過去某個特定的版本。

Git是一個免費開源的版本控制系統,也是目前最流行、應用最廣泛的版本控制系統之一。

https://git-scm.com/book/en/v2/Getting-Started-A-Short-History-of-Git

$ git config --global user.name "Your Name Here"
$ git config --global user.email "your_email@example.com"
這個部分只需要進行一次,但你可以隨時更改。

$ git config --list  ## 可以看見你的用戶名、信箱以及其他訊息

$ exit  ## 退出Git Bash


Introduction to Github (3:53)

Git = Local (on your computer); GitHub = Remote (on the web)

GitHub是一個提供與軟體開發的網路主機服務,其使用Git版本控制系統作為核心。它能讓你在線開發項目,也能將項目上傳至網路上供其他人查閱和開發。

也就是說,它允許用戶對本地資源庫執行推送和拉取,對處於Git管理下的本地資源庫,你可以將它們推送至網路上的遠程資源庫中,或從遠程資源庫拉取回來。它同時提供每一個用戶一個主頁,當中列出了該用戶所有的資源庫。這些GitHub上的資源庫也會備份在服務器上,以防止你的本地庫發生意外。

但GitHub最主要的核心是在於它的社交功能,它允許用戶互相關注、分享及開發各自項目。

※ GitHub的帳號信箱要跟Coursera的信箱一樣

Creating a Github Repository (5:51)

創建資源庫(repo)
  • 創建一個全新的資源庫
  1. https://github.com/new
  2. 或在個人主頁(https://github.com/yourUserNameHere)的右上角建立。(如下圖)

※ 免費帳戶一律只能創建公開(Public)的資源庫。
 記得勾選"Initialize this repository with a README"的選擇框。

現在你可以在本地點腦上創建一個備份,先打開Git Bash,然後創建一個用來存放資源庫備份的文件夾


  • 創建一個基於其他用戶的資源庫的分叉(Fork)
建立分叉可以讓你和其他人合作開發軟體,它會在你的個人主頁裡創建一個該資源庫的備份。


git clone http://github.com/yourUserNameHere/repoNameHere.git

這個命令可以讓你獲得遠程服務器上的資源庫版本,它會複製在你當前的工作目錄下。

https://help.github.com/articles/fork-a-repo/
https://git-scm.com/book/it/v2/Git-Basics-Getting-a-Git-Repository

Basic Git Commands (5:52)

http://gitready.com/beginner/2009/01/21/pushing-and-pulling.html

git add .:把所有新文件添加到你現在的工作目錄
git add -u:更新那些被改名或被刪除的文件
git add -A:包含上述兩個命令
git commit -m "message":提交,注釋最好是關於此次更改的描述,這僅僅是本地的操作,不會更新到GitHub
git push:推送到GitHub

Fork及Branch的差別(http://wp.chunhsin.idv.tw/?p=4179
  1. Fork會另外複製一個版本,這個版本也是一個完整的套件。
  2. 官方說明文字裡指出,Fork主要是指要以其他人的套件為初始套件來開發時,或者要替他人的套件做出貢獻,也就是說通常是從其他Git帳號所擁有的套件複製而來的就是Fork。
  3. 如果是自己的套件,正確的作法應使用branch
  4. Fork底下還可以有Branch,但沒有Branch底下還有Fork這種狀況。
  5. 無論是Fork還是Branch的版本都可以合併至主要版本。唯一差別是Fork是向原作者送出merge的要求,尚需要原作者允許才可以合併,而branch因為是從自己的帳號分支出來的套件,所以不須另外允許。
git checkout -b "branchname":創建一個分支(Branch)
git branch:查看分支
git checkout master:切換回主分支

合併分叉(Fork)或分支(Branch),這功能只有在GitHub才有



如果是與別人合併,那他們會收到通知,如果他們同意修改,就會將你的請求整合到他們的資源庫。

Basic Markdown (2:22)

Markdown(.md)是一種以簡單、特定格式寫成的文件。GitHub、R及Rstudio都可以識別此格式。

Heading

## This is a secondary heading  // 第二級標題
### This is a tertiary heading  // 第三級標題

* first item in list  // 未排序列表第一項
* second item in list // 未排序列表第二項
* third item in list  // 未排序列表第三項

Getting markdown help

Installing R Packages (5:37)

http://cran.r-project.org/mirrors.html

http://www.bioconductor.org/(生物學及大型數據)

> a <- available.packages()
> head(rownames(a), 3)  ## Shoe the names of the first few packages
[1] "A3"          "abc"         "ABCanalysis"

http://cran.r-project.org/web/views/

> install.packages("slidify")  ## Installing an R Package

> install.packages(c("slidify, "ggplot2", "devtools"))

> source("http://bioconductor.org/biocLite.R")> biocLite()
> biocLite(c("GenomicFeatures", "AnnotationDbi"))
library():告訴R要載入哪個套件

> library(ggplot2)
> search()  ## 可以看見組成ggplot2的所有函數
 [1] ".GlobalEnv"        "package:ggplot2"   "tools:rstudio"    
 [4] "package:stats"     "package:graphics"  "package:grDevices"
 [7] "package:utils"     "package:datasets"  "package:methods"  
[10] "Autoloads"         "package:base" 

Installing Rtools (2:29)

這一節僅針對Windows用戶。

Rtools是在Windows下建構R套件時必備的一系列工具。
> find.package("devtools")
> install.packages("devtools")

> library(devtools)

然後輸入find_rtools(),應該返回一個TRUE。