支持向量機SVM算法原理及應用(R)

支持向量機SVM算法原理及應用(R)

版權聲明:本文為博主原創文章,轉載請注明來源。 https://blog.csdn.net/csqazwsxedc/article/details/52230092

只要接觸到數據挖掘/機器學習,相比都會聽過“支持向量機”的大名。在機器學習領域,支持向量機SVM(Support Vector Machine)是一個有監督的學習模型,通常用來進行模式識別、分類、以及回歸分析。SVM涉及的知識面非常廣,目標函數、優化過程、并行方法、算法收斂性、樣本復雜度等。學習SVM可以看《統計學習方法》、Andrew Ng支持向量機等,這里推薦一個博客,講的非常詳細,我就不搬過來了,大家可以直接去看那篇博客,最好能靜下心來直接拿起筆跟著博主推理一邊,這樣更能加深印象。

http://blog.csdn.net/v_july_v/article/details/7624837

學習完原理,接下來就該應用了,應用后更能加深對SVM的理解。

從事漁業生產有經驗的從業者可通過觀察水色變化調控水質,以維持養殖水體生態系統中浮游植物、微生物類、浮游動物等合理的動態平衡。由于這些多是通過經驗和肉眼觀察進行判斷,存在主觀性引起的觀察性偏倚,使觀察結果的可比性、可重復性降低,不易推廣應用。當前,數字圖像處理技術為計算機監控技術在水產養殖業的應用提供更大的空間。在水質在線監測方面,數字圖像處理技術是基于計算機視覺,以專家經驗為基礎,對池塘水色進行優劣分級,達到對池塘水色的準確快速判別。

?

水色分類

水色

淺綠色(清水或濁水)

灰藍色

黃褐色

茶褐色

(姜黃、茶褐、紅褐、褐中帶綠等)

綠色(黃綠、油綠、藍綠、墨綠、綠中帶褐等)

水質類別

1

2

3

4

5

標準條件下拍攝的水樣圖像

每個水質圖片命名規則為“類別-編號.jpg”,如“1_1.jpg”說明當前圖片屬于第1類的樣本。

接下來進行特征提取

采用顏色矩來提取水樣圖像的特征

水色圖像特征與相應的水色類別的部分數據

?

水質類別

序號

R通道一階矩

G通道一階矩

B通道一階矩

R通道二階矩

G通道二階矩

B通道二階矩

R通道三階矩

G通道三階矩

B通道三階矩

1

1

0.582823

0.543774

0.252829

0.014192

0.016144

0.041075

-0.01264

-0.01609

-0.04154

2

1

0.495169

0.539358

0.416124

0.011314

0.009811

0.014751

0.015367

0.01601

0.019748

3

1

0.510911

0.489695

0.186255

0.012417

0.010816

0.011644

-0.00747

-0.00768

-0.00509

4

1

0.420351

0.436173

0.167221

0.01122

0.007195

0.010565

-0.00628

0.003173

-0.00729

5

1

0.211567

0.335537

0.111969

0.012056

0.013296

0.00838

0.007305

0.007503

0.00365

1

2

0.563773

0.534851

0.271672

0.009723

0.007856

0.011873

-0.00513

0.003032

-0.00547

2

2

0.465186

0.508643

0.361016

0.013753

0.012709

0.019557

0.022785

0.022329

0.031616

3

2

0.533052

0.506734

0.185972

0.011104

0.007902

0.01265

0.004797

-0.0029

0.004214

4

2

0.398801

0.42556

0.191341

0.014424

0.010462

0.01547

0.009207

0.006471

0.006764

5

2

0.298194

0.427725

0.097936

0.014778

0.012456

0.008322

0.00851

0.006117

0.00347

1

3

0.630328

0.594269

0.298577

0.007731

0.005877

0.010148

0.003447

-0.00345

-0.00653

2

3

0.491916

0.546367

0.425871

0.010344

0.008293

0.01226

0.009285

0.009663

0.011549

3

3

0.559437

0.522702

0.194201

0.012478

0.007927

0.012183

0.004477

-0.00341

-0.00529

4

3

0.402068

0.431443

0.177364

0.010554

0.007287

0.010748

0.006261

-0.00341

0.006419

5

3

0.408963

0.486953

0.178113

0.012662

0.009752

0.014497

-0.00672

0.002168

0.009992

1

4

0.638606

0.61926

0.319711

0.008125

0.006045

0.009746

-0.00487

0.003083

-0.0045

?

SVM預測模型輸入變量

序號

變量名稱

變量描述

取值范圍

1

R通道一階矩

水樣圖像在R顏色通道的一階矩

0~1

2

G通道一階矩

水樣圖像在G顏色通道的一階矩

0~1

3

B通道一階矩

水樣圖像在B顏色通道的一階矩

0~1

4

R通道二階矩

水樣圖像在R顏色通道的二階矩

0~1

5

G通道二階矩

水樣圖像在G顏色通道的二階矩

0~1

6

B通道二階矩

水樣圖像在B顏色通道的二階矩

0~1

7

R通道三階矩

水樣圖像在R顏色通道的三階矩

-1~1

8

G通道三階矩

水樣圖像在G顏色通道的三階矩

-1~1

9

B通道三階矩

水樣圖像在B顏色通道的三階矩

-1~1

10

水質類別

不同類別能表征水中浮游植物的種類和多少

1,2,3,4,5

圖形轉換為數據后,R語言建模

建模之前,我來介紹下R語言的SVM用法。使用SVM需安裝e1071包

第一種簡單方式建模:

?

svm(formula, data= NULL, subset, na.action = na.omit , scale= TRUE)?
formula:函數模型的形式

?

data:模型中包含的有變量的一組可選格式數據。

參數na.action用于指定當樣本數據中存在無效的空數據時系統應該進行的處理。默認值na.omit表明程序會忽略那些數據缺失的樣本。另外一個可選的賦值是na.fail,它指示系統在遇到空數據時給出一條錯誤信息。

參數scale為一個邏輯向量,指定特征數據是否需要標準化(默認標準化為均值0,方差1)。索引向量subset用于指定那些將被來訓練模型的采樣數據。

第二種根據所給的數據建模:

?

svm(x, y = NULL, scale = TRUE, type = NULL, kernel = "radial",degree = 3, gamma = if (is.vector(x)) 1 else 1 / ncol(x),coef0 = 0, cost = 1, nu = 0.5, subset, na.action = na.omit)
此處,x可以是一個數據矩陣,也可以是一個數據向量,同時也可以是一個稀疏矩陣。y是對于x數據的結果標簽,它既可以是字符向量也可以為數值向量。x和y共同指定了將要用來建模的訓練數據以及模型的基本形式。
參數type用于指定建立模型的類別。支持向量機模型通常可以用作分類模型、回歸模型或者異常檢測模型。根據用途的差異,在svm()函數中的type可取的值有C-classification、nu-classification、one-classification、eps-regression和nu-regression這五種類型中。其中,前三種是針對于字符型結果變量的分類方式,其中第三種方式是邏輯判別,即判別結果輸出所需判別的樣本是否屬于該類別;而后兩種則是針對數值型結果變量的分類方式。
此外,kernel是指在模型建立過程中使用的核函數。針對線性不可分的問題,為了提高模型預測精度,通常會使用核函數對原始特征進行變換,提高原始特征維度,解決支持向量機模型線性不可分問題。svm()函數中的kernel參數有四個可選核函數,分別為線性核函數、多項式核函數、高斯核函數及神經網絡核函數。其中,高斯核函數與多項式核函數被認為是性能最好、也最常用的核函數。
核函數有兩種主要類型:局部性核函數和全局性核函數,高斯核函數是一個典型的局部性核函數,而多項式核函數則是一個典型的全局性核函數。局部性核函數僅僅在測試點附近小領域內對數據點有影響,其學習能力強、泛化性能較弱;而全局性核函數則相對來說泛化性能較強、學習能力較弱。
對于選定的核函數,degree參數是指核函數多項式內積函數中的參數,其默認值為3。gamma參數給出了核函數中除線性內積函數以外的所有函數的參數,默認值為l。coef0參數是指核函數中多項式內積函數與sigmoid內積函數中的參數,默認值為0。
另外,參數cost就是軟間隔模型中的離群點權重。最后,參數nu是用于nu-regression、nu-classification和one-classification類型中的參數。
一個經驗性的結論是,在利用svm()函數建立支持向量機模型時,使用標準化后的數據建立的模型效果更好。

?

?

  1. colnames(Data)<-c("class","id","R1","G1","B1","R2","G2","B2","R3","G3","B3")
  2. head(Data)
  1. ## class id R1 G1 B1 R2 G2
  2. ## 1 1 1 0.5828229 0.5437737 0.2528287 0.014192030 0.016143875
  3. ## 2 1 10 0.6416595 0.5706572 0.2137280 0.015438840 0.011177918
  4. ## 3 1 11 0.6036844 0.5767189 0.2822538 0.008658572 0.007074807
  5. ## 4 1 12 0.5897057 0.5937430 0.2522425 0.007908293 0.005940868
  6. ## 5 1 13 0.5910962 0.5920930 0.2535949 0.007448469 0.006494667
  7. ## 6 1 14 0.5886801 0.5696339 0.3189053 0.007527690 0.005046087
  8. ## B2 R3 G3 B3
  9. ## 1 0.041075252 -0.012643137 -0.016090364 -0.041536239
  10. ## 2 0.013707795 0.009727136 -0.003723814 -0.003779448
  11. ## 3 0.012203640 -0.004694985 -0.002570890 -0.009450531
  12. ## 4 0.010568364 0.003303400 -0.003416659 -0.005273416
  13. ## 5 0.012151602 0.000496116 -0.002235644 -0.005095575
  14. ## 6 0.008386259 -0.003529253 0.001746734 -0.005790924
  1. #數據分割
  2. set.seed(1234)#設置隨機種子
  3. #定義序列ind,隨機抽取1和2,1的個數占80%,2的個數占20%
  4. ind <- sample(2, nrow(Data), replace=TRUE, prob=c(0.8, 0.2))
  5. traindata <-Data[ind==1,]#訓練數據
  6. testdata <- Data[ind==2,]#測試數據
  7. #將class列轉換為factor類型
  8. traindata<-transform(traindata,class=as.factor(class))
  9. testdata<-transform(testdata,class=as.factor(class))
  10. ##支持向量機分類模型構建
  11. library(e1071)#加載e1071包
  12. #利用svm建立支持向量機分類模型
  13. svm.model<-svm(class~., traindata[,-2])
  14. summary(svm.model)
  1. ##
  2. ## Call:
  3. ## svm(formula = class ~ ., data = traindata[, -2])
  4. ##
  5. ##
  6. ## Parameters:
  7. ## SVM-Type: C-classification
  8. ## SVM-Kernel: radial
  9. ## cost: 1
  10. ## gamma: 0.1111111
  11. ##
  12. ## Number of Support Vectors: 119
  13. ##
  14. ## ( 31 26 41 16 5 )
  15. ##
  16. ##
  17. ## Number of Classes: 5
  18. ##
  19. ## Levels:
  20. ## 1 2 3 4 5
#通過summary函數可以得到關于模型的相關信息。其中,SVM-Type項目說明本模型的類別為C分類器模型;SVM-Kernel項目說明本模型所使用的核函數為高斯內積函數且核函數中參數gamma的取值為0.11;cost項目說明本模型確定的約束違反成本為l。而且我們還可以看到,模型找到了119個支持向量:第一類包含有31個支持向量,第二類包含有26個支持向量,第三類包含41個支持向量,第四類包含有16個支持向量,第三類包含5個支持向量。最后一行說明模型中的三個類別分別為1、2、3、4、5.

?

?

  1. #建立混淆矩陣
  2. #訓練集
  3. confusion.train.svm=table(traindata$class,predict(svm.model,traindata,type="class"))
  4. accuracy.train.svm=sum(diag(confusion.train.svm))/sum(confusion.train.svm)
  5. confusion.train.svm
  1. ##
  2. ## 1 2 3 4 5
  3. ## 1 41 0 2 0 0
  4. ## 2 0 37 0 0 0
  5. ## 3 1 0 61 0 0
  6. ## 4 0 0 2 15 0
  7. ## 5 1 0 0 0 4
accuracy.train.svm
## [1] 0.9634146
  1. #測試集
  2. confusion.test.svm=table(testdata$class,predict(svm.model,testdata,type="class"))
  3. accuracy.test.svm=sum(diag(confusion.test.svm))/sum(confusion.test.svm)
  4. confusion.test.svm
  1. ##
  2. ## 1 2 3 4 5
  3. ## 1 8 0 0 0 0
  4. ## 2 0 7 0 0 0
  5. ## 3 0 0 16 0 0
  6. ## 4 0 1 2 4 0
  7. ## 5 0 0 0 0 1
accuracy.test.svm
## [1] 0.9230769
  1. #隨機森林
  2. library(randomForest)
## randomForest 4.6-12
## Type rfNews() to see new features/changes/bug fixes.
  1. randomForest.model<-randomForest(class~., traindata[,-2])
  2. summary(randomForest.model)
  1. ## Length Class Mode
  2. ## call 3 -none- call
  3. ## type 1 -none- character
  4. ## predicted 164 factor numeric
  5. ## err.rate 3000 -none- numeric
  6. ## confusion 30 -none- numeric
  7. ## votes 820 matrix numeric
  8. ## oob.times 164 -none- numeric
  9. ## classes 5 -none- character
  10. ## importance 9 -none- numeric
  11. ## importanceSD 0 -none- NULL
  12. ## localImportance 0 -none- NULL
  13. ## proximity 0 -none- NULL
  14. ## ntree 1 -none- numeric
  15. ## mtry 1 -none- numeric
  16. ## forest 14 -none- list
  17. ## y 164 factor numeric
  18. ## test 0 -none- NULL
  19. ## inbag 0 -none- NULL
  20. ## terms 3 terms call
randomForest.model
  1. ##
  2. ## Call:
  3. ## randomForest(formula = class ~ ., data = traindata[, -2])
  4. ## Type of random forest: classification
  5. ## Number of trees: 500
  6. ## No. of variables tried at each split: 3
  7. ##
  8. ## OOB estimate of error rate: 9.15%
  9. ## Confusion matrix:
  10. ## 1 2 3 4 5 class.error
  11. ## 1 36 3 4 0 0 0.16279070
  12. ## 2 1 35 1 0 0 0.05405405
  13. ## 3 2 0 60 0 0 0.03225806
  14. ## 4 0 0 1 16 0 0.05882353
  15. ## 5 1 0 0 2 2 0.60000000
  1. #訓練集
  2. confusion.train.randomForest=table(traindata$class,predict(randomForest.model,traindata,type="class"))
  3. accuracy.train.randomForest=sum(diag(confusion.train.randomForest))/sum(confusion.train.randomForest)
  4. confusion.train.randomForest
  1. ##
  2. ## 1 2 3 4 5
  3. ## 1 43 0 0 0 0
  4. ## 2 0 37 0 0 0
  5. ## 3 0 0 62 0 0
  6. ## 4 0 0 0 17 0
  7. ## 5 0 0 0 0 5
accuracy.train.randomForest
## [1] 1
  1. #測試集
  2. confusion.test.randomForest=table(testdata$class,predict(randomForest.model,testdata,type="class"))
  3. accuracy.test.randomForest=sum(diag(confusion.test.randomForest))/sum(confusion.test.randomForest)
  4. confusion.test.randomForest
  1. ##
  2. ## 1 2 3 4 5
  3. ## 1 7 0 1 0 0
  4. ## 2 0 7 0 0 0
  5. ## 3 1 0 15 0 0
  6. ## 4 0 0 2 5 0
  7. ## 5 0 0 0 0 1
accuracy.test.randomForest
## [1] 0.8974359

?

?

  1. #神經網絡
  2. library(nnet)
  3. nnet.model<-nnet(class~., traindata[,-2],size=30,decay=.001)
  1. ## # weights: 455
  2. ## initial value 318.920319
  3. ## iter 10 value 176.714302
  4. ## iter 20 value 57.798855
  5. ## iter 30 value 42.657486
  6. ## iter 40 value 27.296733
  7. ## iter 50 value 20.803959
  8. ## iter 60 value 18.519644
  9. ## iter 70 value 16.706718
  10. ## iter 80 value 15.700517
  11. ## iter 90 value 15.200025
  12. ## iter 100 value 14.797823
  13. ## final value 14.797823
  14. ## stopped after 100 iterations
summary(nnet.model)
  1. ## a 9-30-5 network with 455 weights
  2. ## options were - softmax modelling decay=0.001
  3. ## b->h1 i1->h1 i2->h1 i3->h1 i4->h1 i5->h1 i6->h1 i7->h1 i8->h1 i9->h1
  4. ## -2.75 -1.05 -1.31 -0.04 0.00 0.00 -0.03 0.06 0.00 0.11
  5. ## b->h2 i1->h2 i2->h2 i3->h2 i4->h2 i5->h2 i6->h2 i7->h2 i8->h2 i9->h2
  6. ## 1.55 -2.29 -0.37 -0.76 1.02 1.46 1.91 -1.90 -2.21 -2.26
  7. ## b->h3 i1->h3 i2->h3 i3->h3 i4->h3 i5->h3 i6->h3 i7->h3 i8->h3 i9->h3
  8. ## 3.06 2.93 2.01 -17.11 1.57 0.56 0.62 -0.89 0.67 3.71
  9. ## b->h4 i1->h4 i2->h4 i3->h4 i4->h4 i5->h4 i6->h4 i7->h4 i8->h4 i9->h4
  10. ## 13.76 -20.60 -2.70 -13.91 0.05 0.26 1.69 -0.41 -0.87 -1.86
  11. ## b->h5 i1->h5 i2->h5 i3->h5 i4->h5 i5->h5 i6->h5 i7->h5 i8->h5 i9->h5
  12. ## 8.63 -7.74 -8.29 -0.52 -5.14 -4.83 -5.11 6.94 2.07 0.17
  13. ## b->h6 i1->h6 i2->h6 i3->h6 i4->h6 i5->h6 i6->h6 i7->h6 i8->h6 i9->h6
  14. ## 2.16 -7.64 0.96 4.96 1.28 2.07 2.49 -2.65 -1.87 -3.63
  15. ## b->h7 i1->h7 i2->h7 i3->h7 i4->h7 i5->h7 i6->h7 i7->h7 i8->h7 i9->h7
  16. ## 7.74 -7.29 -6.89 -4.14 -1.00 -0.61 0.63 1.61 -1.54 -5.57
  17. ## b->h8 i1->h8 i2->h8 i3->h8 i4->h8 i5->h8 i6->h8 i7->h8 i8->h8 i9->h8
  18. ## -6.20 6.18 5.23 -0.35 4.25 3.92 4.70 -5.18 -2.24 -3.47
  19. ## b->h9 i1->h9 i2->h9 i3->h9 i4->h9 i5->h9 i6->h9 i7->h9 i8->h9 i9->h9
  20. ## 7.43 -6.77 -11.18 7.93 -5.95 -5.05 -4.73 7.39 1.18 -4.61
  21. ## b->h10 i1->h10 i2->h10 i3->h10 i4->h10 i5->h10 i6->h10 i7->h10 i8->h10
  22. ## 2.12 0.33 0.54 -0.99 0.11 0.04 0.11 -0.03 -0.09
  23. ## i9->h10
  24. ## 0.06
  25. ## b->h11 i1->h11 i2->h11 i3->h11 i4->h11 i5->h11 i6->h11 i7->h11 i8->h11
  26. ## -2.55 0.01 -0.82 -0.21 -0.22 -0.18 -0.32 0.06 0.12
  27. ## i9->h11
  28. ## 0.54
  29. ## b->h12 i1->h12 i2->h12 i3->h12 i4->h12 i5->h12 i6->h12 i7->h12 i8->h12
  30. ## -18.76 15.10 9.42 20.70 1.89 0.88 2.24 1.13 3.40
  31. ## i9->h12
  32. ## -11.18
  33. ## b->h13 i1->h13 i2->h13 i3->h13 i4->h13 i5->h13 i6->h13 i7->h13 i8->h13
  34. ## 2.17 -11.66 0.77 13.47 -2.00 -0.48 -1.18 -0.16 -0.14
  35. ## i9->h13
  36. ## -0.44
  37. ## b->h14 i1->h14 i2->h14 i3->h14 i4->h14 i5->h14 i6->h14 i7->h14 i8->h14
  38. ## 4.90 -14.11 4.32 -7.64 1.13 1.22 1.62 -2.77 -0.60
  39. ## i9->h14
  40. ## 1.82
  41. ## b->h15 i1->h15 i2->h15 i3->h15 i4->h15 i5->h15 i6->h15 i7->h15 i8->h15
  42. ## -2.00 -0.21 -1.04 -0.65 -0.22 -0.17 -0.26 0.19 0.06
  43. ## i9->h15
  44. ## 0.34
  45. ## b->h16 i1->h16 i2->h16 i3->h16 i4->h16 i5->h16 i6->h16 i7->h16 i8->h16
  46. ## 0.55 -0.72 1.13 1.70 0.21 0.33 0.16 -0.40 -0.18
  47. ## i9->h16
  48. ## 0.23
  49. ## b->h17 i1->h17 i2->h17 i3->h17 i4->h17 i5->h17 i6->h17 i7->h17 i8->h17
  50. ## 1.95 -1.02 0.93 -0.71 0.08 0.13 0.02 -0.18 -0.07
  51. ## i9->h17
  52. ## -0.02
  53. ## b->h18 i1->h18 i2->h18 i3->h18 i4->h18 i5->h18 i6->h18 i7->h18 i8->h18
  54. ## -1.94 0.39 -0.65 -0.33 -0.43 -0.58 -0.58 0.56 0.36
  55. ## i9->h18
  56. ## 0.89
  57. ## b->h19 i1->h19 i2->h19 i3->h19 i4->h19 i5->h19 i6->h19 i7->h19 i8->h19
  58. ## -2.89 -0.62 -1.17 -0.62 -0.03 -0.05 -0.15 0.05 0.05
  59. ## i9->h19
  60. ## 0.25
  61. ## b->h20 i1->h20 i2->h20 i3->h20 i4->h20 i5->h20 i6->h20 i7->h20 i8->h20
  62. ## 2.69 0.93 1.39 0.74 0.30 0.32 0.45 -0.33 -0.34
  63. ## i9->h20
  64. ## -0.31
  65. ## b->h21 i1->h21 i2->h21 i3->h21 i4->h21 i5->h21 i6->h21 i7->h21 i8->h21
  66. ## -2.97 -0.45 -1.26 0.46 -0.13 -0.19 -0.35 0.24 0.15
  67. ## i9->h21
  68. ## 0.53
  69. ## b->h22 i1->h22 i2->h22 i3->h22 i4->h22 i5->h22 i6->h22 i7->h22 i8->h22
  70. ## -2.02 -0.48 -1.09 -0.70 -0.07 -0.14 -0.26 0.21 0.04
  71. ## i9->h22
  72. ## 0.34
  73. ## b->h23 i1->h23 i2->h23 i3->h23 i4->h23 i5->h23 i6->h23 i7->h23 i8->h23
  74. ## 11.00 -9.85 -5.03 -7.26 -5.00 -5.03 -6.66 6.29 3.49
  75. ## i9->h23
  76. ## 9.93
  77. ## b->h24 i1->h24 i2->h24 i3->h24 i4->h24 i5->h24 i6->h24 i7->h24 i8->h24
  78. ## 0.09 0.10 1.19 0.87 0.15 0.18 0.02 -0.27 -0.03
  79. ## i9->h24
  80. ## 0.35
  81. ## b->h25 i1->h25 i2->h25 i3->h25 i4->h25 i5->h25 i6->h25 i7->h25 i8->h25
  82. ## -1.65 4.19 -0.24 -1.84 -1.58 -2.09 -3.09 2.29 2.50
  83. ## i9->h25
  84. ## 6.02
  85. ## b->h26 i1->h26 i2->h26 i3->h26 i4->h26 i5->h26 i6->h26 i7->h26 i8->h26
  86. ## 1.60 2.12 0.63 -9.24 3.25 3.09 3.24 -3.76 -2.22
  87. ## i9->h26
  88. ## -0.40
  89. ## b->h27 i1->h27 i2->h27 i3->h27 i4->h27 i5->h27 i6->h27 i7->h27 i8->h27
  90. ## -1.77 1.13 -1.39 -1.13 -0.43 -0.47 -0.68 0.41 0.18
  91. ## i9->h27
  92. ## 1.08
  93. ## b->h28 i1->h28 i2->h28 i3->h28 i4->h28 i5->h28 i6->h28 i7->h28 i8->h28
  94. ## -0.24 4.65 0.83 -9.53 2.28 2.06 2.00 -2.98 -2.04
  95. ## i9->h28
  96. ## 1.40
  97. ## b->h29 i1->h29 i2->h29 i3->h29 i4->h29 i5->h29 i6->h29 i7->h29 i8->h29
  98. ## -2.92 -0.57 -1.21 0.07 -0.18 -0.08 -0.14 0.13 0.06
  99. ## i9->h29
  100. ## 0.25
  101. ## b->h30 i1->h30 i2->h30 i3->h30 i4->h30 i5->h30 i6->h30 i7->h30 i8->h30
  102. ## -2.17 2.89 2.08 -0.17 -0.80 -1.19 -2.03 1.25 2.02
  103. ## i9->h30
  104. ## 5.09
  105. ## b->o1 h1->o1 h2->o1 h3->o1 h4->o1 h5->o1 h6->o1 h7->o1 h8->o1
  106. ## -1.61 -0.73 -1.36 11.20 -5.48 -8.67 -3.12 -5.21 5.32
  107. ## h9->o1 h10->o1 h11->o1 h12->o1 h13->o1 h14->o1 h15->o1 h16->o1 h17->o1
  108. ## -12.47 -0.23 -0.50 15.65 -11.70 -3.57 -1.02 -1.60 -0.80
  109. ## h18->o1 h19->o1 h20->o1 h21->o1 h22->o1 h23->o1 h24->o1 h25->o1 h26->o1
  110. ## 0.30 -0.47 1.03 -2.01 -0.76 -4.20 -0.88 3.70 3.09
  111. ## h27->o1 h28->o1 h29->o1 h30->o1
  112. ## -0.48 3.23 -0.84 2.52
  113. ## b->o2 h1->o2 h2->o2 h3->o2 h4->o2 h5->o2 h6->o2 h7->o2 h8->o2
  114. ## 4.22 -0.06 -2.83 -10.27 -4.22 5.12 1.71 -2.68 -4.57
  115. ## h9->o2 h10->o2 h11->o2 h12->o2 h13->o2 h14->o2 h15->o2 h16->o2 h17->o2
  116. ## 8.36 -1.34 -0.73 5.57 13.82 -2.43 -0.22 1.78 0.33
  117. ## h18->o2 h19->o2 h20->o2 h21->o2 h22->o2 h23->o2 h24->o2 h25->o2 h26->o2
  118. ## -0.10 -0.19 -0.19 0.28 -0.18 6.00 1.17 1.99 -10.20
  119. ## h27->o2 h28->o2 h29->o2 h30->o2
  120. ## -0.72 -9.77 -0.24 0.65
  121. ## b->o3 h1->o3 h2->o3 h3->o3 h4->o3 h5->o3 h6->o3 h7->o3 h8->o3
  122. ## -1.54 4.15 -0.36 5.06 -15.39 -0.59 -4.92 -3.20 0.79
  123. ## h9->o3 h10->o3 h11->o3 h12->o3 h13->o3 h14->o3 h15->o3 h16->o3 h17->o3
  124. ## -6.78 2.10 2.95 -16.51 -4.10 -4.52 2.53 0.26 0.79
  125. ## h18->o3 h19->o3 h20->o3 h21->o3 h22->o3 h23->o3 h24->o3 h25->o3 h26->o3
  126. ## 1.46 3.31 -1.69 5.18 2.72 7.33 1.37 3.03 5.39
  127. ## h27->o3 h28->o3 h29->o3 h30->o3
  128. ## 1.82 8.05 5.08 3.49
  129. ## b->o4 h1->o4 h2->o4 h3->o4 h4->o4 h5->o4 h6->o4 h7->o4 h8->o4
  130. ## -0.22 0.95 -0.08 -2.06 5.33 11.89 -2.25 8.77 -5.54
  131. ## h9->o4 h10->o4 h11->o4 h12->o4 h13->o4 h14->o4 h15->o4 h16->o4 h17->o4
  132. ## 13.74 -2.61 0.54 -9.44 -4.01 -4.70 1.03 -2.56 -1.48
  133. ## h18->o4 h19->o4 h20->o4 h21->o4 h22->o4 h23->o4 h24->o4 h25->o4 h26->o4
  134. ## 0.51 0.74 -2.16 1.63 1.09 5.32 -2.31 -0.28 -0.19
  135. ## h27->o4 h28->o4 h29->o4 h30->o4
  136. ## 1.54 -0.34 1.04 -2.99
  137. ## b->o5 h1->o5 h2->o5 h3->o5 h4->o5 h5->o5 h6->o5 h7->o5 h8->o5
  138. ## -0.96 -4.20 4.76 -4.01 19.82 -7.68 8.59 2.49 3.97
  139. ## h9->o5 h10->o5 h11->o5 h12->o5 h13->o5 h14->o5 h15->o5 h16->o5 h17->o5
  140. ## -2.97 2.07 -2.33 4.71 6.04 15.20 -2.48 2.17 1.26
  141. ## h18->o5 h19->o5 h20->o5 h21->o5 h22->o5 h23->o5 h24->o5 h25->o5 h26->o5
  142. ## -1.96 -3.36 2.99 -5.00 -2.73 -14.51 0.60 -8.41 1.90
  143. ## h27->o5 h28->o5 h29->o5 h30->o5
  144. ## -2.11 -1.15 -5.09 -3.74
nnet.model
  1. ## a 9-30-5 network with 455 weights
  2. ## inputs: R1 G1 B1 R2 G2 B2 R3 G3 B3
  3. ## output(s): class
  4. ## options were - softmax modelling decay=0.001
  1. #訓練集
  2. confusion.train.nnet=table(traindata$class,predict(nnet.model,traindata,type="class"))
  3. accuracy.train.nnet=sum(diag(confusion.train.nnet))/sum(confusion.train.nnet)
  4. confusion.train.nnet
  1. ##
  2. ## 1 2 3 4 5
  3. ## 1 43 0 0 0 0
  4. ## 2 0 37 0 0 0
  5. ## 3 0 0 62 0 0
  6. ## 4 0 0 0 17 0
  7. ## 5 0 0 0 0 5
accuracy.train.nnet
## [1] 1
  1. #測試集
  2. confusion.test.nnet=table(testdata$class,predict(nnet.model,testdata,type="class"))
  3. accuracy.test.nnet=sum(diag(confusion.test.nnet))/sum(confusion.test.nnet)
  4. confusion.test.nnet
  1. ##
  2. ## 1 2 3 4 5
  3. ## 1 8 0 0 0 0
  4. ## 2 0 7 0 0 0
  5. ## 3 0 0 16 0 0
  6. ## 4 0 0 1 6 0
  7. ## 5 0 0 0 0 1
accuracy.test.nnet
## [1] 0.974359
  1. #對比支持向量機、隨機森林、人工神經網絡算法的準確率
  2. accuracy.svm <-c(accuracy.train.svm,accuracy.test.svm)
  3. accuracy.randomForest<-c(accuracy.train.randomForest,accuracy.test.randomForest)
  4. accuracy.nnet <-c(accuracy.train.nnet,accuracy.test.nnet)
  5. accuracy.data <-data.frame(accuracy.svm,accuracy.randomForest,accuracy.nnet)
  6. accuracy.data
  1. ## accuracy.svm accuracy.randomForest accuracy.nnet
  2. ## 1 0.9634146 1.0000000 1.000000
  3. ## 2 0.9230769 0.8974359 0.974359

?

第一行是訓練集準確率,第二行是測試集準確率。

1.支持向量機雖然在訓練集擬合度不如隨機森林和神經網絡,但是測試集準確率較高;

2.隨機森林明顯過擬合;

3.對比發現神經網絡不管訓練集還是測試集效果都最好。

該對比只是簡單的對比,不能直接說明哪種算法最好。

原因:

1.數據樣本過少;

2.實際使用算法中還要考慮到算法運行的時間,當面對海量數據時,準確復雜的算法往往運行過慢。

3.算法得出的模型“好壞”,不僅僅只看準確率,還要看其他指標比如:recall、percision、F1-score等。比如地震預測更看重recall指標

4.實際中還是要結合具體情況,選擇合適的算法。

以后有時間再將各種算法進行復雜的對比。

轉載于:https://www.cnblogs.com/liquan-anran/p/9548531.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/389823.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389823.shtml
英文地址,請注明出處:http://en.pswp.cn/news/389823.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mad離群值_全部關于離群值

mad離群值An outlier is a data point in a data set that is distant from all other observations. A data point that lies outside the overall distribution of the dataset. Or in a layman term, we can say, an outlier is something that behaves differently from th…

2057. 值相等的最小索引

2057. 值相等的最小索引 給你一個下標從 0 開始的整數數組 nums &#xff0c;返回 nums 中滿足 i mod 10 nums[i] 的最小下標 i &#xff1b;如果不存在這樣的下標&#xff0c;返回 -1 。 x mod y 表示 x 除以 y 的 余數 。 示例 1&#xff1a;輸入&#xff1a;nums [0,1,2…

SpringBoot中各配置文件的優先級及加載順序

我們在寫程序的時候會碰到各種環境(開發、測試、生產)&#xff0c;因而&#xff0c;在我們切換環境的時候&#xff0c;我們需要手工切換配置文件的內容。這大大的加大了運維人員的負擔&#xff0c;同時會帶來一定的安全隱患。 為此&#xff0c;為了能更合理地重寫各屬性的值&am…

青年報告_了解青年的情緒

青年報告Youth-led media is any effort created, planned, implemented, and reflected upon by young people in the form of media, including websites, newspapers, television shows, and publications. Such platforms connect writers, artists, and photographers in …

post提交參數過多時,取消Tomcat對 post長度限制

1.Tomcat 默認的post參數的最大大小為2M&#xff0c; 當超過時將會出錯&#xff0c;可以配置maxPostSize參數來改變大小。 從 apache-tomcat-7.0.63 開始&#xff0c;參數 maxPostSize 的含義就變了&#xff1a; 如果將值設置為 0&#xff0c;表示 POST 最大值為 0&#xff0c;…

2048. 下一個更大的數值平衡數

2048. 下一個更大的數值平衡數 如果整數 x 滿足&#xff1a;對于每個數位 d &#xff0c;這個數位 恰好 在 x 中出現 d 次。那么整數 x 就是一個 數值平衡數 。 給你一個整數 n &#xff0c;請你返回 嚴格大于 n 的 最小數值平衡數 。 示例 1&#xff1a;輸入&#xff1a;n …

bzoj1222: [HNOI2001]產品加工

一開始以為是費用流。。然后搞不出來&#xff0c;路牌是DP&#xff0c;想一想 f[i][j]表示加工到第i個產品&#xff0c;然后A用時j&#xff0c;B用時的最小值 那么f[i][j]max(f[i-1][j-a[i]],f[i-1][j]b[i],f[i-1][j-c[i]]c[i]) 滾掉一維美滋滋 #include<cstdio> #includ…

map(平均平均精度_客戶的平均平均精度

map(平均平均精度Disclaimer: this was created for my clients because it’s rather challenging to explain such a complex metric in simple words, so don’t expect to see much of math or equations here. And remember that I try to keep it simple.免責聲明 &#…

Sublime Text 2搭建Go開發環境,代碼提示+補全+調試

本文在已安裝Go環境的前提下繼續。 1、安裝Sublime Text 2 2、安裝Package Control。 運行Sublime&#xff0c;按下 Ctrl&#xff08;在Tab鍵上邊&#xff09;&#xff0c;然后輸入以下內容&#xff1a; import urllib2,os,hashlib; h 7183a2d3e96f11eeadd761d777e62404 e330…

629. K個逆序對數組

629. K個逆序對數組 給出兩個整數 n 和 k&#xff0c;找出所有包含從 1 到 n 的數字&#xff0c;且恰好擁有 k 個逆序對的不同的數組的個數。 逆序對的定義如下&#xff1a;對于數組的第i個和第 j個元素&#xff0c;如果滿i < j且 a[i] > a[j]&#xff0c;則其為一個逆…

zookeeper、hbase常見命令

a) Zookeeper&#xff1a;幫助命令-help i. ls /查看zk下根節點目錄 ii. create /zk_test my_data//在測試集群沒有創建成功 iii. get /zk_test my_data//獲取節點信息 iv. set / zk_test my_data//更改節點相關信息 v. delete /zk_test//刪除節點信…

鮮活數據數據可視化指南_數據可視化實用指南

鮮活數據數據可視化指南Exploratory data analysis (EDA) is an essential part of the data science or the machine learning pipeline. In order to create a robust and valuable product using the data, you need to explore the data, understand the relations among v…

2049. 統計最高分的節點數目

2049. 統計最高分的節點數目 給你一棵根節點為 0 的 二叉樹 &#xff0c;它總共有 n 個節點&#xff0c;節點編號為 0 到 n - 1 。同時給你一個下標從 0 開始的整數數組 parents 表示這棵樹&#xff0c;其中 parents[i] 是節點 i 的父節點。由于節點 0 是根&#xff0c;所以 p…

Linux lsof命令詳解

lsof&#xff08;List Open Files&#xff09; 用于查看你進程開打的文件&#xff0c;打開文件的進程&#xff0c;進程打開的端口(TCP、UDP)&#xff0c;找回/恢復刪除的文件。是十分方便的系統監視工具&#xff0c;因為lsof命令需要訪問核心內存和各種文件&#xff0c;所以需要…

史密斯臥推:杠鈴史密斯下斜臥推、上斜機臥推、平板臥推動作圖解

史密斯臥推&#xff1a;杠鈴史密斯下斜臥推、上斜機臥推、平板臥推動作圖解 史密斯臥推&#xff08;smith press&#xff09;是固定器械上完成的臥推&#xff0c;對于初級健身者來說&#xff0c;自由臥推&#xff08;啞鈴臥推、杠鈴臥推&#xff09;還不能很好地把握平衡性&…

圖像特征 可視化_使用衛星圖像可視化建筑區域

圖像特征 可視化地理可視化/菲律賓/遙感 (GEOVISUALIZATION / PHILIPPINES / REMOTE-SENSING) Big data is incredible! The way Big Data manages to bring sciences and business domains to new levels is almost sort of magical. It allows us to tap into a variety of a…

ELK入門01—Elasticsearch安裝

1. 安裝 首先從官網下載安裝包此處我們選擇2.4.6這個版本,然后下載tar壓縮包下載以后直接解壓&#xff0c;就算安裝完成了 tar zxvf elasticsearch-2.4.6.tar.gz 2. 配置 編輯elasticsearch配置文件 # 進入安裝目錄 cd elasticsearch-2.4.6 # 編輯配置文件 vi ./config/elastic…

375. 猜數字大小 II

375. 猜數字大小 II 我們正在玩一個猜數游戲&#xff0c;游戲規則如下&#xff1a; 我從 1 到 n 之間選擇一個數字。你來猜我選了哪個數字。如果你猜到正確的數字&#xff0c;就會 贏得游戲 。如果你猜錯了&#xff0c;那么我會告訴你&#xff0c;我選的數字比你的 更大或者更…

hdu_2048 錯排問題

錯排問題本質上就是一個動態規劃問題&#xff0c;其狀態轉移方程為&#xff1a; 記d[n]為n個人錯排情況的總數。 那么策略可以描述為&#xff1a;分析第n個人錯排的可能情況&#xff1a; 1&#xff09;前n-1個人滿足錯排的情況&#xff0c;那么第n個人加入后還要錯排意味著第n個…

海量數據尋找最頻繁的數據_在數據中尋找什么

海量數據尋找最頻繁的數據Some activities are instinctive. A baby doesn’t need to be taught how to suckle. Most people can use an escalator, operate an elevator, and open a door instinctively. The same isn’t true of playing a guitar, driving a car, or anal…