20150824 [學習筆記] R與資料探勘 (1)

整理自 R軟體與資料探勘之開發與應用 -- 倒傳遞類神經網路

[ GitHub ]
 
 
  • 背景知識
 
 
  • 學習內容
  • R 軟體安裝 (略過)
  • R Studio軟體安裝 (略過)
 
  • 資料探勘方法
  • START : 訓練資料和測試資料
 
  • 分類演算法
  • (一)倒傳遞類神經網路(Back-Propagation Neural Network)
  • (二)決策樹(Decision Tree)
  • (三)支援向量機(Support Vector Machine)
  • (四)貝式分類(Naïve Bayes)
  • (五)k位最近鄰居法(k-Nearest Neighbor)
 
  • 分群演算法
  • (六)階層分群演算法(Hierarchical Clustering)
  • (七)k平均演算法(k-Means)
  • (八)模糊c平均演算法(Fuzzy c-Means)
  • (九)期望最大值演算法(Expectation-Maximization)
  • (十)自組織映射圖(Self Organizing Maps)
 
 
 
 

START : 訓練資料和測試資料

[前置作業]  基本概念
  • 建議先了解RStudio的基本操作
 
  • 建議先了解Excel的基本操作
 
  • 相關知識
 
 
[建立資料]  以內建之資料集合iris為例
  • 先新增R 程式 :
 
  • 1.  在編輯器裡輸入 write.csv(iris, file.choose())"
# R Script [START]
write.csv(iris, file.choose())
# R Script [END]
  •  
  • 2.  將程式碼全選,並點擊run
 
  • 3.  再將資料存為"data.csv",並在檔案檔案不存在的對話框中選擇 "是(Y)"
 
 
  • 4.  現在開啟剛剛儲存的"data.csv",其中iris資料共有150筆,接著請按照下列指示完成操作 :
 
  • [提示] : " setosa " , " versicolor " , " virginica " 都在" Species "欄位下
 
 
STEP 1 : 將setosa全部取代為" 1 "
  • [取代setosa前]
  • [取代setosa後]
 
 
STEP 2 : 將versicolor全部取代為" 2 "
  • [取代versicolor前]
  • [取代versicolor後]
 
 
STEP 3 : 將virginica全部取代為" 3 "
  • [取代virginica前]
  • [取代virginica後]
 
 
NOTICE : 取代 " setosa " , " versicolor " , " virginica " 後的資料表
 
  •  
STEP 4 : 取得訓練資料 
  • 取得"data.csv"內單數列的資料作為訓練資料 ,將第一個索引欄位刪除 , 並另存成" trainingdata.csv "
  •  (相關的操作請參考前置作業 )
  • [刪除索引欄位前]
  • [刪除索引欄位後]
 
 
STEP 5 : 取得測試資料
  • 取得"data.csv"內偶數列的資料設為測試資料 , 將第一個索引欄位刪除 , 並另存成" testingdata.csv "
  •  (相關的操作請參考前置作業 )
  • [刪除索引欄位前]
  • [刪除索引欄位後]
 
 
 
 

(一)倒傳遞類神經網路(Back-Propagation Neural Network)

[前置作業] 基本概念
  • 相關知識
 
 
STAGE 1 : 訓練階段
  • 1.  新增R程式 , 並在編輯器內撰寫以下內容(完成後將這個R script存成"neural network.R"檔案) : 
install.packages('neuralnet')
library("neuralnet")
 
# training stage
trainingdata <- read.csv(file.choose())
 
net.model <- neuralnet(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,trainingdata, hidden=10, threshold=0.01)
print(net.model)
plot(net.model)
  •  
  • 2.  將程式碼全選並點擊 run (如果R沒有相關工具包的話 . 會自動連網下載) , 過一陣子後會出現對話視窗 , 在這裡我們選取剛剛在上一個章節(START : 訓練資料和測試資料)所建立的訓練資料" trainingdata.csv ": 
 
  • 3.  接著就會顯示出訓練結果
 
 
STAGE 2 : 測試階段
  • 1.  繼續使用剛剛的R script , 新增以下內容 : 
# testing stage
testingfile <- read.csv(file.choose())
testingdata <- subset(testingfile, select = -Species)
testingtarget <- testingfile$Species
 
results <- compute(net.model, testingdata)
print(round(results$net.result))
 
  • 2.  將程式碼全選並點擊 run ,會出現對話視窗,在這裡我們選取在上一個章節(START : 訓練資料和測試資料)建立的測試資料" testingdata.csv ": 
 
  • 3.  接著就會顯示出測試結果
 
 
STAGE 3 : 評估階段
  • 1.  繼續使用剛剛的R script , 新增以下內容 : 
# accuracy
table(testingtarget, round(results$net.result))
accuracy <- sum(testingtarget == round(results$net.result))/length(testingtarget)
sprintf("%.2f%%", accuracy * 100)
 
  • 2.  將程式碼全選並點擊 run , 就會顯示出分類結果 , 我們得知其正確率為 97.33 %