机器学习与数据科学 基于R的统计学习方法(基础部分)
1.1 機器學習的分類
監督學習:線性回歸或邏輯回歸,
非監督學習:是K-均值聚類, 即在數據點集中找出“聚類”。 另一種常用技術叫做主成分分析(PCA) , 用于降維,
算法的評估方法也不盡相同。 最常用的方法是將均方根誤差(RMSE) 的值降到最小, 這一數值用于評價測試集的預測
結果是否準確。 RMSE評價法會在第7章進行更深入的解釋。 另一種常用的評估方法是AUC, 即ROC曲線下的面積。
?
1.8 使用R包
有大量的通用包(當前大約是7000個) , 其中很多涉及有用的統計方法, 也有特定領域的包: 金融、 天文學、 分子生物學、 生態學等。
1. 你可以用下面給出的R腳本來找到當下可用的R包數目:
> dim(available.packages())
2. 一旦找到了滿足你需求的R包, 你需要在本地配置中安裝它。 例如, 這是安裝lubridate包的命令:
> install.packages("lubridate")
3. 一個包只能安裝一次。 安裝完成后, 你需要做的是用library()把它加載到內存中。 library()函數用來加載基礎R配置中未包括的函數庫(函數和數據集的集合) 。
> library(lubridate)
4. 你應該去訪問CRAN上該R包的頁面來下載參考手冊和任何可能有幫助的簡介
5. 舉個例子, 基礎R包含有stats包, 里面有常用算法, 例
如: lm()用來擬合一個簡單的線性回歸模型, glm()用來擬合廣義的線性模型; 如邏輯回歸: hclust()用來做聚類分析, kmeans()用來做k均值聚類, prcomp()用來做基本的組成成分分析; 還有其他很多功能。
除此之外, 還有許多機器學習的附加包可以補充基礎R包的功能。例如, class包中的knn()用來做k最近鄰算法, tree包中的tree()用于擬合分類樹或是回歸樹, randomForest包中的randomForest()用來實現隨機樹算法, e1071包中的svm()用來實現支持向量機, 還有很多其他功能。
6. 為了找到其他滿足機器學習需求的R包, 你可以使用谷歌。 例如,你想尋找用來實現進化算法的包, 可以搜索“R中的進化算法”。 結果會告訴你參考DEoptim包, 這個包中含有你需要的機器學習算法。
?
1.9 數據集
1. 書中使用的大多數數據集都是R軟件在安裝時自帶的
2. 你將在RStudio的Workspace標簽頁看到數據集的名稱
data(package="plyr")
要查看某個數據集中的更多內容, 你可以使用在數據集名稱前面加? 的命令
> ? airquality
你可以使用以下命令來將某個數據集加載到內存中:
> data(iris)
?
?
第2章連接數據
1. 很多機器學習和數據分析討論的前提是你已經有干凈的數據, 可以直接把它們應用在探索性數據分析工具中, 然后選擇一個合適的機器學習模型。 遺憾的是, 這種情況很少發生, 更多的時候, 你需要定位數據, 確定它使用了哪種格式, 找到一個有連接數據功能的R包, 最后, 連接數據并把它讀入R數據框(data frame)
2. 數據是屬于同一群體的定性或定量的變量的值; 是你感興趣的一組對象的集合, 其中的一個變量是對一項的特征的度量。
2.1 管理你的工作目錄
1. 工作目錄用于儲存各種組成你項目的文件,包括數據文件、 R腳本、 圖表文件、 RDATA文件, 也包含你分析得出的文件(Word、 PowerPoint等格式)。 有些人使用工作目錄下的“data”子文件夾來存儲這些數據文件。
2. R有兩條命令來管理工作目錄: getwd()用于檢索目前的工作目錄, setwd()用于創建新的工作目錄。 在打開RStudio時, 你可以在R控制臺中用setwd()函數來創建工作目錄,
3. 相對路徑 絕對路徑
4. 管理工作目錄的另一個方法是使用RStudio的功能: Session -> Set Working Directory -> Choose Directory來指向你需要的目錄。
?
1.
2.2 數據文件的種類
2.3 數據的來源
訪問San Francisco Data網站(data.sfgov.org) , 上
面包含了大量的市政數據集。 要用到的Parking Meter數據集, 包含了多方面的儀表特征。 目標是直接從網站上下載CSV文件格式的數據集。為此, 我們將使用download.file()指令。
2.5 讀取CSV文件
CSV文件的格式很簡單:文件中的每一行代表了一個觀測值, 每一列代表一個變量(潛在的特征變量)。
2.6 讀取Excel文件
| 2007電子表格文件中讀取數據的工具: |
| read.xlsx()和read.xlsx2()函數。 read.xlsx2()函數通常能更快地處理大型電 |
| 子表格。 |
注:
| 還需要使用library()函數來加載xlsx包, 否則使用中會找不到 |
2.7 使用文件連接
從文本文件中按行讀取數據是有意義的。為此, R有一個有用的函數readLines(), 可以和文件連接一同使用。
?
?
第3章 數據處理
plyr、 dplyr、 reshape2、 stringr和lubridate這些包遲早都會用到,我們將在后面的小節中看到這些包的使用案例。
3.1 特征工程
特征工程(feature engineering) 用于識別在模型或者機器學習算法中使用的數據子集或者轉換后的數據。 不同的學術分支使用不同的表述來描述同一個東西。 當描述輸入到模型的數據子集時,統計學家使用“解釋變量”“因變量”、 或者“預測因子”。 在另一方面,數據科學家使用“特征”。
3.2 數據管道
我建議把所有的代碼片段都保存在一個主要的R腳本文件中或者工作目錄下。這些腳本將成為數據管道的基礎。數據管道(data pipeline) 是數據轉換任務中決定性的一部分, 需獲取原始數據集,然后把它們轉換成適合機器學習的變換后數據集
3.3 數據采樣
讓我們使用iris數據集作為數據抽樣的例子。用sample()函數來隨機選擇10行可重復的記錄。生成的sample_index是一個整型向量, 包含了指向iris數據集中被選中的記錄的索引。
> sample_index <-sample(1:nrow(iris), 10, replace=T)
3.4 修正變量名
3.5 創建新變量
3.6 數值離散化
將一個連續值變量劃分到區間中, 創建一個新因素變量的范圍值,并將變量值分配到相應的范圍中, 這整個過程叫做“離散化”
3.7 日期處理
3.8 將類變量二值化
3.9 合并數據集
R中有非常有用的merge()函數, 可以基于公共變量將數據框合并到一起。 如果你熟悉SQL, 你可能已經猜到merge()和連接操作非常相似。 實際上確實如此, 不同的地方在于merge()不但可以執行內部和外部的連接, 而且可以進行左連接和右連
接。
merge()函數允許4種合并數據的方式:
內連接(inner join) : 只保留兩個數據框中一致的行,指定參數
all=FALSE。
外連接(outer join) : 保留數據框中所有的行,指定all=TRUE。
左外連接(left outer join) : 包含數據框x的所有行加上數據框y中
能匹配到數據框x的所有數據, 指定all.x=TRUE。
右外連接(right outer join) : 包含數據框x的能匹配到數據框y的所
有數據, 加上數據框y中所有的行, 指定all.y=TRUE。
3.10 排列數據集
3.11 重塑數據集
3.12 使用dplyr進行數據操作
、
3.13 處理缺失數據
3.14 特征縮放
3.15 降維
?
快捷鍵
(1)清空控制臺`Ct rl+L`
(2)清除變量歷史記錄 rm(list = ls())
比如,上圖把p變量清除后,再執行就會提示
Error: object 'p' not found
(3)按Ctrl+C鍵,中斷R正在運行的程序而不退出R軟件
(4)使用快捷鍵這種方法,僅在RStudio中可以使用。首先選中要注釋掉的行,然后按 Ctrl+shift+C ,這樣就注釋掉了。這其實和單行注釋的方法一樣,只不過RStudio幫我們簡化而已。如果要取消注釋的話, 依然是先選中,然后按快捷鍵 Ctrl+shift+C 即可。
https://technicspub. com/analytics/
上傳了本書中使用的所有R源代碼和注釋。 同時也收錄了所有的圖表(很多是彩色的)
很多流行的R博客(rbloggers) 的內容: www.r-bloggers.com
?
變量的命名:首字母小寫,第二個單詞字母大寫 lineCnt
數組 向量
基本語法
if(){
}
While(1){
}
For(; ;){
}
break continue
一些重要的網址收藏在R語言中,分享下
http://www.bio-info-trainee.com/2297.html (重要)
http://www.bio-info-trainee.com/2535.html
http://www.360doc.com/content/17/0906/17/41791033_685047297.shtml
R語言基礎視頻: https://www.imooc.com/learn/546
轉載于:https://www.cnblogs.com/mohuishou-love/p/10239953.html
總結
以上是生活随笔為你收集整理的机器学习与数据科学 基于R的统计学习方法(基础部分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天还是那么蓝是什么歌?
- 下一篇: 华为交换机系列异常流量抑制