R語言基礎(chǔ)| 機(jī)器學(xué)習(xí)

寫在前面

R語言中基礎(chǔ)的機(jī)器學(xué)習(xí)主要有:分類衙熔、聚類澄暮、降維九孩、回歸(預(yù)測(cè)先馆,自變量和因變量)這積累問題。拿到數(shù)據(jù)和問題首先要會(huì)判定是這4類中的哪一種躺彬。

此前我們也用專門的教程介紹過在Python中的機(jī)器學(xué)習(xí):機(jī)器學(xué)習(xí)基礎(chǔ)手冊(cè)

本章學(xué)習(xí)Logistic 回歸煤墙、決策樹、隨機(jī)森林宪拥、支持向量機(jī)

1) 概念

監(jiān)督機(jī)器學(xué)習(xí)基于一組包含自變量和因變量的觀測(cè)值仿野。將全部數(shù)據(jù)集分為一個(gè)訓(xùn)練集和一個(gè)測(cè)試集;訓(xùn)練集用于預(yù)測(cè)模型她君,測(cè)試集用于測(cè)試模型的準(zhǔn)確度脚作。

本章將會(huì)用到rpart,rpart.plot和partykit包進(jìn)行決策樹模型及可視化;randomForest包擬合隨機(jī)森林缔刹;通過e1071包構(gòu)造支持向量機(jī)球涛。

2) 機(jī)器學(xué)習(xí)乳腺數(shù)據(jù)癌步驟:

1.讀取數(shù)據(jù)和預(yù)處理(篩選需要的變量)

2.拆分?jǐn)?shù)據(jù)集:訓(xùn)練集和預(yù)測(cè)集(7:3或8:2)

3.建模,數(shù)據(jù)單位一致則不需要標(biāo)準(zhǔn)化校镐,否則需要scale

4.預(yù)測(cè)結(jié)果不好則重新調(diào)整算法

5.預(yù)測(cè)結(jié)果好則應(yīng)用于新數(shù)據(jù)(新觀測(cè)值)

**16.1 數(shù)據(jù)準(zhǔn)備 **

本章數(shù)據(jù)集使用威斯康星州乳腺癌數(shù)據(jù)集亿扁,該數(shù)據(jù)集共11個(gè)變量:ID、腫塊厚度clumpThickness鸟廓、細(xì)胞大小的均勻性sizeUniformity从祝、細(xì)胞形狀的均勻性shapeUniformity襟己、邊際附著力maginalAdhesion、單個(gè)上皮細(xì)胞大小singleEpithelialCellSize牍陌、裸核bareNuclei擎浴、乏味染色體blandChromatin、正常核normalNucleoli毒涧、有絲分裂mitosis和類別class.

16.1.1 數(shù)據(jù)在MASS包中贮预,數(shù)據(jù)集名字為biopsy

library(MASS)head(biopsy)
##        ID V1 V2 V3 V4 V5 V6 V7 V8 V9     class## 1 1000025  5  1  1  1  2  1  3  1  1    benign## 2 1002945  5  4  4  5  7 10  3  2  1    benign## 3 1015425  3  1  1  1  2  2  3  1  1    benign## 4 1016277  6  8  8  1  3  4  3  7  1    benign## 5 1017023  4  1  1  3  2  1  3  1  1    benign## 6 1017122  8 10 10  8  7 10  9  7  1 malignant
df <- biopsydf <- df[-1]head(df)
##   V1 V2 V3 V4 V5 V6 V7 V8 V9     class## 1  5  1  1  1  2  1  3  1  1    benign## 2  5  4  4  5  7 10  3  2  1    benign## 3  3  1  1  1  2  2  3  1  1    benign## 4  6  8  8  1  3  4  3  7  1    benign## 5  4  1  1  3  2  1  3  1  1    benign## 6  8 10 10  8  7 10  9  7  1 malignant
names(df) <- c("clumpThickness","sizeUniformity","shapeUniformity","maginalAdhesion","singleEpithelialCellSize","bareNuclei","blandChromatin","normalNucleoli","mitosis","class")

class中benign為良性,malignant為惡性链嘀。

16.1.2 去除NA值

df <- na.omit(df)

16.1.3 抽樣(sample),抽訓(xùn)練集(train)和測(cè)試集(test)

抽樣前先加一個(gè)set.seed(1234),可以確保每次運(yùn)行程序時(shí)生成的隨機(jī)數(shù)序列是相同的档玻,從而實(shí)現(xiàn)結(jié)果的可重復(fù)性怀泊。需要注意的是,set.seed()函數(shù)應(yīng)該在隨機(jī)數(shù)生成之前調(diào)用误趴,以確保種子在生成隨機(jī)數(shù)之前被設(shè)置霹琼。

只有set.seed()函數(shù)中的設(shè)置的數(shù)字相同則隨機(jī)抽樣的結(jié)果相同

set.seed(1234)train <- sample(nrow(df),0.7*nrow(df),replace = F)df.train <- df[train,]View(df.train)df.test <- df[-train,]View(df.test)

這里的0.7也可以改成0.8。一般是7:3或8:2

16.1.4 table檢查數(shù)據(jù)的拆分情況

table(df.train$class)
## ##    benign malignant ##       302       176
table(df.test$class)
## ##    benign malignant ##       142        63

這步驟還有一個(gè)作用凉当,可與后面模型預(yù)測(cè)的結(jié)果對(duì)比枣申,觀察模型預(yù)測(cè)的效果。

16.2 建模

16.2.1 方法一:Logistic回歸(glm())

Logistic回歸即邏輯回歸看杭,屬于廣義線性回歸的一種忠藤。根據(jù)一組變量預(yù)測(cè)二元輸出(例如是否,好和壞)楼雹。

  • 16.2.1.1 建模

fit.logit <- glm(class~.,data = df.train,family = binomial())summary(fit.logit)
## ## Call:## glm(formula = class ~ ., family = binomial(), data = df.train)## ## Coefficients:##                          Estimate Std. Error z value Pr(>|z|)    ## (Intercept)              -9.68650    1.29722  -7.467 8.20e-14 ***## clumpThickness            0.48002    0.15244   3.149  0.00164 ** ## sizeUniformity            0.05643    0.29272   0.193  0.84714    ## shapeUniformity           0.13180    0.31643   0.417  0.67703    ## maginalAdhesion           0.40721    0.14038   2.901  0.00372 ** ## singleEpithelialCellSize -0.03274    0.18095  -0.181  0.85643    ## bareNuclei                0.44744    0.11176   4.004 6.24e-05 ***## blandChromatin            0.48257    0.19220   2.511  0.01205 *  ## normalNucleoli            0.23550    0.12903   1.825  0.06798 .  ## mitosis                   0.66184    0.28785   2.299  0.02149 *  ## ---## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1## ## (Dispersion parameter for binomial family taken to be 1)## ##     Null deviance: 629.040  on 477  degrees of freedom## Residual deviance:  80.054  on 468  degrees of freedom## AIC: 100.05## ## Number of Fisher Scoring iterations: 8

注:AIC(Akaike Information Criterion)是一種模型選擇準(zhǔn)則模孩,用于比較不同模型的擬合優(yōu)度和復(fù)雜度。在統(tǒng)計(jì)學(xué)中贮缅,AIC值是一種用于評(píng)估統(tǒng)計(jì)模型的相對(duì)優(yōu)劣的指標(biāo)榨咐。

AIC值越低,表示模型對(duì)數(shù)據(jù)的擬合越好且復(fù)雜度較低谴供,因此更優(yōu)于AIC值較高的模型块茁。

結(jié)果中顯示9個(gè)自變量的P值并不都小于0.05,因此可以將不顯著的sizeUniformity和shapeUniformity桂肌、singleEpithelialCellSize去除后再次擬合模型数焊。

  • 16.2.1.2 驗(yàn)證模型predict()

具體用法可以參考?predict()-predict.glm

prob <- predict(object = fit.logit,newdata = df.test,type = "response")prob
##            3            5            6            8            9           16 ## 0.0112449317 0.0258431337 0.9999625461 0.0051061434 0.0236199749 0.4672106476 ##           17           21           25           27           28           30 ## 0.0071994974 0.9997948553 0.0027758628 0.0048816533 0.0115838020 0.0013782551 ##           33           38           39           46           49           50 ## 0.9973585454 0.1877874448 0.9975955959 0.0033190843 0.0258431337 0.9814047180 ##           57           58           59           64           71           74 ## 0.9629829469 0.8156184585 0.7715802512 0.3224788592 0.0150250656 0.9997623868 ##           75           82           83           84           87           92 ## 0.8789463614 0.0107790970 0.0196950113 0.0726793680 0.7845629625 0.0041441570 ##           93           94           95           98          111          112 ## 0.0116130282 0.0017150684 0.0044784421 0.0186346093 0.0563315554 0.9205175298 ##          113          114          119          126          130          131 ## 0.9999639103 0.9980298628 0.0024243798 0.0017150684 0.0008153674 0.0150250656 ##          132          134          135          136          139          142 ## 0.0044784421 0.0056466030 0.0043238397 0.0454130370 0.0082054400 0.0017107090 ##          143          152          155          157          163          173 ## 0.9807771867 0.9871222852 0.0010592254 0.0020695344 0.0072177426 0.0017150684 ##          178          179          182          186          191          193 ## 0.9402769641 0.0116130282 0.0010592254 0.0046267909 0.9999560154 0.0115838020 ##          196          199          203          206          210          215 ## 0.0116130282 0.0010592254 0.0027758628 0.9999906580 0.0192428183 0.9999956479 ##          228          231          232          239          240          244 ## 0.9967019235 0.9928787724 0.9993185258 0.9999986898 0.9953604613 0.0419223255 ##          245          246          253          254          255          261 ## 0.0027758628 0.0427263017 0.9916847043 0.9979190679 0.9521833608 0.9999275421 ##          272          274          275          277          284          287 ## 0.0186346093 0.3161619709 0.0091169000 0.0044670902 0.9912296828 0.9999999001 ##          288          291          297          299          301          304 ## 0.0043238397 0.0010592254 0.7268339179 0.0284488362 0.9969425517 0.0027758628 ##          311          312          313          314          317          319 ## 0.0026798777 0.0010592254 0.9240485470 0.0010592254 0.8887971682 0.0025168532 ##          326          329          332          335          339          341 ## 0.0086003882 0.8792851364 0.0354998923 0.9912165606 0.0017720431 0.9973941797 ##          343          344          346          351          354          368 ## 0.0017107090 0.0010592254 0.0010592254 0.0160692402 0.9996650004 0.9999796693 ##          369          373          381          383          395          405 ## 0.0013782551 0.0082054400 0.0010592254 0.0164146326 0.0023604022 0.0031955036 ##          407          408          413          416          417          425 ## 0.0086776181 0.0017150684 0.9987294489 0.3017208118 0.9981615411 0.0027617842 ##          426          429          430          431          434          437 ## 0.9999965519 0.0017150684 0.0027688146 0.0024280604 0.0074914917 0.7622791536 ##          448          450          452          453          463          466 ## 0.0071812979 0.9998347506 0.0071812979 0.0062141459 0.0257150794 0.9998549548 ##          467          469          470          479          480          481 ## 0.9996824181 0.0044557670 0.0019562146 0.0075949935 0.9992835627 0.0074185118 ##          488          498          502          505          509          511 ## 0.9999971016 0.0047131973 0.0071994974 0.0010592254 0.0071812979 0.0010592254 ##          519          520          522          524          529          532 ## 0.0047252271 0.9888878694 0.0043128780 0.9990358935 0.0223519515 0.0086776181 ##          536          539          540          546          548          551 ## 0.0054147208 0.0071994974 0.0185880445 0.0115838020 0.0017675392 0.0044670902 ##          554          557          560          564          566          570 ## 0.1021246709 0.0214925224 0.0115838020 0.0044670902 0.9999763468 0.9998813632 ##          573          574          575          578          579          580 ## 0.0044670902 0.0017150684 0.9854868522 0.0017150684 0.0017150684 0.0027758628 ##          583          596          598          600          601          603 ## 0.9987812279 0.0115838020 0.0241193817 0.0116066211 0.0044670902 0.0071994974 ##          605          606          608          609          611          613 ## 0.9978381918 0.9998157200 0.0010592254 0.9998041683 0.9998905908 0.9999999873 ##          628          629          632          638          640          641 ## 0.0101570805 0.0017107090 0.0115838020 0.0386856158 0.0160692402 0.0100044442 ##          646          648          655          656          658          660 ## 0.0044670902 0.0023884049 0.0072177426 0.0044670902 0.0922590347 0.0010592254 ##          665          667          668          670          672          676 ## 0.0100297260 0.0248002530 0.0072177426 0.9982067529 0.0114264349 0.0066024464 ##          678          679          680          681          684          686 ## 0.0071812979 0.0010592254 0.0017107090 0.9999999658 0.0010592254 0.0010592254 ##          694 ## 0.0086227000

type= “response” 返回一個(gè)概率值崎场。結(jié)果得到了預(yù)測(cè)腫瘤為惡性的概率昌跌,概率大于0.5的病例被分為惡性腫瘤,概率小于或等于0.5的被分為良性照雁。

prob>0.5
##     3     5     6     8     9    16    17    21    25    27    28    30    33 ## FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE ##    38    39    46    49    50    57    58    59    64    71    74    75    82 ## FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE ##    83    84    87    92    93    94    95    98   111   112   113   114   119 ## FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE ##   126   130   131   132   134   135   136   139   142   143   152   155   157 ## FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE ##   163   173   178   179   182   186   191   193   196   199   203   206   210 ## FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE ##   215   228   231   232   239   240   244   245   246   253   254   255   261 ##  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE ##   272   274   275   277   284   287   288   291   297   299   301   304   311 ## FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE ##   312   313   314   317   319   326   329   332   335   339   341   343   344 ## FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE ##   346   351   354   368   369   373   381   383   395   405   407   408   413 ## FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE ##   416   417   425   426   429   430   431   434   437   448   450   452   453 ## FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE ##   463   466   467   469   470   479   480   481   488   498   502   505   509 ## FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE ##   511   519   520   522   524   529   532   536   539   540   546   548   551 ## FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ##   554   557   560   564   566   570   573   574   575   578   579   580   583 ## FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE ##   596   598   600   601   603   605   606   608   609   611   613   628   629 ## FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE ##   632   638   640   641   646   648   655   656   658   660   665   667   668 ## FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ##   670   672   676   678   679   680   681   684   686   694 ##  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
logit.pred <- factor(prob>0.5,levels = c(FALSE,TRUE),labels=c("benign","malignant"))

轉(zhuǎn)換為因子蚕愤,并且用良性和惡性作為標(biāo)簽來標(biāo)記

比較真實(shí)和預(yù)測(cè)的結(jié)果:

data.frame(Actual=df.test$class,Predict=logit.pred)#比較真實(shí)的和預(yù)測(cè)的結(jié)果
##        Actual   Predict## 3      benign    benign## 5      benign    benign## 6   malignant malignant## 8      benign    benign## 9      benign    benign## 16  malignant    benign## 17     benign    benign## 21  malignant malignant## 25     benign    benign## 27     benign    benign## 28     benign    benign## 30     benign    benign## 33  malignant malignant## 38     benign    benign## 39  malignant malignant## 46     benign    benign## 49     benign    benign## 50  malignant malignant## 57  malignant malignant## 58  malignant malignant## 59  malignant malignant## 64  malignant    benign## 71     benign    benign## 74  malignant malignant## 75  malignant malignant## 82     benign    benign## 83     benign    benign## 84     benign    benign## 87  malignant malignant## 92     benign    benign## 93     benign    benign## 94     benign    benign## 95     benign    benign## 98     benign    benign## 111    benign    benign## 112 malignant malignant## 113 malignant malignant## 114 malignant malignant## 119    benign    benign## 126    benign    benign## 130    benign    benign## 131    benign    benign## 132    benign    benign## 134    benign    benign## 135    benign    benign## 136    benign    benign## 139    benign    benign## 142    benign    benign## 143 malignant malignant## 152 malignant malignant## 155    benign    benign## 157    benign    benign## 163    benign    benign## 173    benign    benign## 178 malignant malignant## 179    benign    benign## 182    benign    benign## 186    benign    benign## 191 malignant malignant## 193    benign    benign## 196    benign    benign## 199    benign    benign## 203    benign    benign## 206 malignant malignant## 210    benign    benign## 215 malignant malignant## 228 malignant malignant## 231 malignant malignant## 232 malignant malignant## 239 malignant malignant## 240 malignant malignant## 244    benign    benign## 245    benign    benign## 246    benign    benign## 253    benign malignant## 254 malignant malignant## 255 malignant malignant## 261 malignant malignant## 272    benign    benign## 274 malignant    benign## 275    benign    benign## 277    benign    benign## 284 malignant malignant## 287 malignant malignant## 288    benign    benign## 291    benign    benign## 297    benign malignant## 299    benign    benign## 301 malignant malignant## 304    benign    benign## 311    benign    benign## 312    benign    benign## 313 malignant malignant## 314    benign    benign## 317 malignant malignant## 319    benign    benign## 326    benign    benign## 329 malignant malignant## 332    benign    benign## 335 malignant malignant## 339    benign    benign## 341 malignant malignant## 343    benign    benign## 344    benign    benign## 346    benign    benign## 351    benign    benign## 354 malignant malignant## 368 malignant malignant## 369    benign    benign## 373    benign    benign## 381    benign    benign## 383    benign    benign## 395    benign    benign## 405    benign    benign## 407    benign    benign## 408    benign    benign## 413 malignant malignant## 416    benign    benign## 417 malignant malignant## 425    benign    benign## 426 malignant malignant## 429    benign    benign## 430    benign    benign## 431    benign    benign## 434    benign    benign## 437 malignant malignant## 448    benign    benign## 450 malignant malignant## 452    benign    benign## 453    benign    benign## 463    benign    benign## 466 malignant malignant## 467 malignant malignant## 469    benign    benign## 470    benign    benign## 479    benign    benign## 480 malignant malignant## 481    benign    benign## 488 malignant malignant## 498    benign    benign## 502    benign    benign## 505    benign    benign## 509    benign    benign## 511    benign    benign## 519    benign    benign## 520 malignant malignant## 522    benign    benign## 524 malignant malignant## 529    benign    benign## 532    benign    benign## 536    benign    benign## 539    benign    benign## 540    benign    benign## 546    benign    benign## 548    benign    benign## 551    benign    benign## 554    benign    benign## 557    benign    benign## 560    benign    benign## 564    benign    benign## 566 malignant malignant## 570 malignant malignant## 573    benign    benign## 574    benign    benign## 575 malignant malignant## 578    benign    benign## 579    benign    benign## 580    benign    benign## 583 malignant malignant## 596    benign    benign## 598    benign    benign## 600    benign    benign## 601    benign    benign## 603    benign    benign## 605 malignant malignant## 606 malignant malignant## 608    benign    benign## 609 malignant malignant## 611 malignant malignant## 613 malignant malignant## 628    benign    benign## 629    benign    benign## 632    benign    benign## 638    benign    benign## 640    benign    benign## 641    benign    benign## 646    benign    benign## 648    benign    benign## 655    benign    benign## 656    benign    benign## 658    benign    benign## 660    benign    benign## 665    benign    benign## 667    benign    benign## 668    benign    benign## 670 malignant malignant## 672    benign    benign## 676    benign    benign## 678    benign    benign## 679    benign    benign## 680    benign    benign## 681 malignant malignant## 684    benign    benign## 686    benign    benign## 694    benign    benign
logistic.pref <- table(df.test$class,logit.pred,dnn = c("Acutal","Predict"))#生成混淆矩陣logistic.pref
##            Predict## Acutal      benign malignant##   benign       140         2##   malignant      3        60

注:

table()函數(shù)中的參數(shù)dnn代表”dimnames”答恶,它用于指定結(jié)果表格的維度名稱。在特定情況下萍诱,dnn參數(shù)允許您為結(jié)果表的行和列提供自定義名稱悬嗓,以便更好地描述數(shù)據(jù)。

這里結(jié)果表的行名稱將被命名為”Actual”裕坊,列名稱將被命名為”Predict”包竹。這樣,生成的表格將具有更直觀的標(biāo)簽來表示實(shí)際值和預(yù)測(cè)值之間的關(guān)系籍凝。

混淆矩陣解讀:

預(yù)測(cè)中有140個(gè)為良性周瞎,其中2個(gè)預(yù)測(cè)錯(cuò)了,實(shí)際為142個(gè)為良性饵蒂;60個(gè)為惡性声诸,其中3個(gè)預(yù)測(cè)錯(cuò)了,實(shí)際上63個(gè)為惡性退盯。

準(zhǔn)確度計(jì)算

在該例子中彼乌,準(zhǔn)確度為(140+60)/205=98%。

  • 16.2.1.3 優(yōu)化模型

在該例子中模型預(yù)測(cè)的準(zhǔn)確度還不錯(cuò)渊迁,可以不用優(yōu)化慰照。如果要優(yōu)化,可以將P值不顯著的那3個(gè)變量刪除后重新預(yù)測(cè)模型琉朽。

16.2.2 方法二:決策樹 rpart()

決策樹的基本思想是對(duì)自變量進(jìn)行二元分離毒租,從而構(gòu)造一顆可用于預(yù)測(cè)新觀測(cè)值所屬類別的樹。包括經(jīng)典決策樹和條件推斷樹箱叁。

  • 16.2.2.1 經(jīng)典決策樹

1)建模-語法

library(rpart)library(rpart.plot)dtree <- rpart(formula, data=, method = "class", control = rpart.control(), ...)dtree$cptabledtree.pruned <- prune(dtree,cp=)#可選項(xiàng)蝌衔,用于修剪決策樹summary(dtree)rpart.plot(dtree,type=2)

rpart()參數(shù):

formula: 用于指定模型的公式,通常采用自變量和因變量的關(guān)系描述蝌蹂。

data: 包含數(shù)據(jù)的數(shù)據(jù)框或其他可用于模型擬合的對(duì)象噩斟。

method: 用于指定分裂規(guī)則的方法。默認(rèn)值為”anova”孤个,表示采用方差分析進(jìn)行分裂剃允。其他可選值包括”class”(分類問題)和”exp”(指數(shù)損失函數(shù))。

control: 控制決策樹構(gòu)建過程的參數(shù)設(shè)置齐鲤〕夥希可以使用rpart.control()函數(shù)創(chuàng)建一個(gè)控制參數(shù)對(duì)象,也可以直接提供參數(shù)的值给郊。

…: 其他可選參數(shù)牡肉,用于進(jìn)一步控制模型擬合過程。

rpart.plot()參數(shù):

type: 可視化類型的選擇淆九。默認(rèn)值為2统锤,表示繪制帶有節(jié)點(diǎn)標(biāo)簽和箭頭的決策樹毛俏。其他可選值包括0(只繪制決策樹的框架)和1(繪制帶有節(jié)點(diǎn)標(biāo)簽但沒有箭頭的決策樹)∷橇…: 其他可選參數(shù)辑奈,用于進(jìn)一步控制圖形的外觀和布局雕憔。

dtree$cptable

返回的結(jié)果中塔粒,cp為復(fù)雜度參數(shù)品追,用于懲罰過大的樹;nsplit為分支的數(shù)量鸦泳,確定樹的大小银锻,有n個(gè)分支則說明該樹有n+1個(gè)終端節(jié)點(diǎn);rel error 為訓(xùn)練集中各種樹對(duì)應(yīng)的誤差率做鹰;xerror為交叉驗(yàn)證誤差击纬,即基于訓(xùn)練集所得的10折交叉驗(yàn)證誤差;xstd為交叉驗(yàn)證誤差的標(biāo)準(zhǔn)差誊垢。

2)驗(yàn)證模型

方法如上掉弛。

3)舉例

library(rpart)library(rpart.plot)
## Warning: 程輯包'rpart.plot'是用R版本4.3.2 來建造的
dtree <- rpart(class~., data=df.train, method = "class")dtree$cptable
##           CP nsplit  rel error    xerror       xstd## 1 0.79545455      0 1.00000000 1.0000000 0.05991467## 2 0.07954545      1 0.20454545 0.2386364 0.03516748## 3 0.01704545      2 0.12500000 0.1818182 0.03104673## 4 0.01000000      5 0.07386364 0.1647727 0.02965484
summary(dtree)
## Call:## rpart(formula = class ~ ., data = df.train, method = "class")##   n= 478 ## ##           CP nsplit  rel error    xerror       xstd## 1 0.79545455      0 1.00000000 1.0000000 0.05991467## 2 0.07954545      1 0.20454545 0.2386364 0.03516748## 3 0.01704545      2 0.12500000 0.1818182 0.03104673## 4 0.01000000      5 0.07386364 0.1647727 0.02965484## ## Variable importance##           sizeUniformity          shapeUniformity           blandChromatin ##                       21                       18                       15 ## singleEpithelialCellSize           normalNucleoli          maginalAdhesion ##                       14                       14                       13 ##               bareNuclei           clumpThickness ##                        4                        2 ## ## Node number 1: 478 observations,    complexity param=0.7954545##   predicted class=benign     expected loss=0.3682008  P(node) =1##     class counts:   302   176##    probabilities: 0.632 0.368 ##   left son=2 (320 obs) right son=3 (158 obs)##   Primary splits:##       sizeUniformity           < 3.5 to the left,  improve=155.9749, (0 missing)##       shapeUniformity          < 3.5 to the left,  improve=152.4471, (0 missing)##       bareNuclei               < 2.5 to the left,  improve=141.3332, (0 missing)##       blandChromatin           < 3.5 to the left,  improve=139.3239, (0 missing)##       singleEpithelialCellSize < 2.5 to the left,  improve=132.7007, (0 missing)##   Surrogate splits:##       shapeUniformity          < 3.5 to the left,  agree=0.937, adj=0.810, (0 split)##       blandChromatin           < 3.5 to the left,  agree=0.900, adj=0.696, (0 split)##       singleEpithelialCellSize < 3.5 to the left,  agree=0.893, adj=0.677, (0 split)##       normalNucleoli           < 2.5 to the left,  agree=0.879, adj=0.633, (0 split)##       maginalAdhesion          < 3.5 to the left,  agree=0.874, adj=0.620, (0 split)## ## Node number 2: 320 observations,    complexity param=0.07954545##   predicted class=benign     expected loss=0.084375  P(node) =0.6694561##     class counts:   293    27##    probabilities: 0.916 0.084 ##   left son=4 (294 obs) right son=5 (26 obs)##   Primary splits:##       bareNuclei      < 4.5 to the left,  improve=26.54631, (0 missing)##       normalNucleoli  < 3.5 to the left,  improve=20.08477, (0 missing)##       clumpThickness  < 6.5 to the left,  improve=17.48577, (0 missing)##       shapeUniformity < 3.5 to the left,  improve=17.19825, (0 missing)##       blandChromatin  < 3.5 to the left,  improve=15.97866, (0 missing)##   Surrogate splits:##       clumpThickness           < 7.5 to the left,  agree=0.944, adj=0.308, (0 split)##       shapeUniformity          < 4.5 to the left,  agree=0.938, adj=0.231, (0 split)##       normalNucleoli           < 4.5 to the left,  agree=0.938, adj=0.231, (0 split)##       blandChromatin           < 4.5 to the left,  agree=0.931, adj=0.154, (0 split)##       singleEpithelialCellSize < 3.5 to the left,  agree=0.928, adj=0.115, (0 split)## ## Node number 3: 158 observations##   predicted class=malignant  expected loss=0.05696203  P(node) =0.3305439##     class counts:     9   149##    probabilities: 0.057 0.943 ## ## Node number 4: 294 observations,    complexity param=0.01704545##   predicted class=benign     expected loss=0.02380952  P(node) =0.6150628##     class counts:   287     7##    probabilities: 0.976 0.024 ##   left son=8 (272 obs) right son=9 (22 obs)##   Primary splits:##       bareNuclei      < 2.5 to the left,  improve=4.121212, (0 missing)##       blandChromatin  < 3.5 to the left,  improve=2.639362, (0 missing)##       normalNucleoli  < 3.5 to the left,  improve=2.349593, (0 missing)##       sizeUniformity  < 2.5 to the left,  improve=2.245614, (0 missing)##       shapeUniformity < 2.5 to the left,  improve=1.924300, (0 missing)##   Surrogate splits:##       mitosis < 2.5 to the left,  agree=0.929, adj=0.045, (0 split)## ## Node number 5: 26 observations,    complexity param=0.01704545##   predicted class=malignant  expected loss=0.2307692  P(node) =0.05439331##     class counts:     6    20##    probabilities: 0.231 0.769 ##   left son=10 (7 obs) right son=11 (19 obs)##   Primary splits:##       shapeUniformity          < 1.5 to the left,  improve=4.478890, (0 missing)##       sizeUniformity           < 1.5 to the left,  improve=4.430769, (0 missing)##       clumpThickness           < 3.5 to the left,  improve=3.591880, (0 missing)##       normalNucleoli           < 2   to the left,  improve=3.230769, (0 missing)##       singleEpithelialCellSize < 2.5 to the left,  improve=2.355769, (0 missing)##   Surrogate splits:##       sizeUniformity           < 1.5 to the left,  agree=0.885, adj=0.571, (0 split)##       singleEpithelialCellSize < 2.5 to the left,  agree=0.885, adj=0.571, (0 split)##       clumpThickness           < 1.5 to the left,  agree=0.846, adj=0.429, (0 split)##       maginalAdhesion          < 1.5 to the left,  agree=0.769, adj=0.143, (0 split)##       blandChromatin           < 1.5 to the left,  agree=0.769, adj=0.143, (0 split)## ## Node number 8: 272 observations##   predicted class=benign     expected loss=0  P(node) =0.5690377##     class counts:   272     0##    probabilities: 1.000 0.000 ## ## Node number 9: 22 observations,    complexity param=0.01704545##   predicted class=benign     expected loss=0.3181818  P(node) =0.0460251##     class counts:    15     7##    probabilities: 0.682 0.318 ##   left son=18 (14 obs) right son=19 (8 obs)##   Primary splits:##       clumpThickness           < 4.5 to the left,  improve=7.795455, (0 missing)##       sizeUniformity           < 2.5 to the left,  improve=5.964502, (0 missing)##       shapeUniformity          < 2.5 to the left,  improve=5.964502, (0 missing)##       blandChromatin           < 2.5 to the left,  improve=4.454545, (0 missing)##       singleEpithelialCellSize < 2.5 to the left,  improve=2.366883, (0 missing)##   Surrogate splits:##       sizeUniformity  < 1.5 to the left,  agree=0.864, adj=0.625, (0 split)##       shapeUniformity < 2.5 to the left,  agree=0.864, adj=0.625, (0 split)##       normalNucleoli  < 1.5 to the left,  agree=0.864, adj=0.625, (0 split)##       maginalAdhesion < 3.5 to the left,  agree=0.818, adj=0.500, (0 split)##       blandChromatin  < 3.5 to the left,  agree=0.818, adj=0.500, (0 split)## ## Node number 10: 7 observations##   predicted class=benign     expected loss=0.2857143  P(node) =0.01464435##     class counts:     5     2##    probabilities: 0.714 0.286 ## ## Node number 11: 19 observations##   predicted class=malignant  expected loss=0.05263158  P(node) =0.03974895##     class counts:     1    18##    probabilities: 0.053 0.947 ## ## Node number 18: 14 observations##   predicted class=benign     expected loss=0  P(node) =0.0292887##     class counts:    14     0##    probabilities: 1.000 0.000 ## ## Node number 19: 8 observations##   predicted class=malignant  expected loss=0.125  P(node) =0.0167364##     class counts:     1     7##    probabilities: 0.125 0.875
rpart.plot(dtree,type=2)
1.webp (2).jpg
class <- predict(object = dtree,newdata = df.test,type = "class")data.frame(Actual=df.test$class,Predict=class)#比較真實(shí)的和預(yù)測(cè)的結(jié)果
##        Actual   Predict## 3      benign    benign## 5      benign    benign## 6   malignant malignant## 8      benign    benign## 9      benign    benign## 16  malignant malignant## 17     benign    benign## 21  malignant malignant## 25     benign    benign## 27     benign    benign## 28     benign    benign## 30     benign    benign## 33  malignant malignant## 38     benign    benign## 39  malignant malignant## 46     benign    benign## 49     benign    benign## 50  malignant malignant## 57  malignant malignant## 58  malignant    benign## 59  malignant malignant## 64  malignant    benign## 71     benign    benign## 74  malignant malignant## 75  malignant malignant## 82     benign    benign## 83     benign    benign## 84     benign    benign## 87  malignant malignant## 92     benign    benign## 93     benign    benign## 94     benign    benign## 95     benign    benign## 98     benign    benign## 111    benign    benign## 112 malignant malignant## 113 malignant malignant## 114 malignant malignant## 119    benign    benign## 126    benign    benign## 130    benign    benign## 131    benign    benign## 132    benign    benign## 134    benign    benign## 135    benign    benign## 136    benign    benign## 139    benign    benign## 142    benign    benign## 143 malignant malignant## 152 malignant malignant## 155    benign    benign## 157    benign    benign## 163    benign    benign## 173    benign    benign## 178 malignant malignant## 179    benign    benign## 182    benign    benign## 186    benign    benign## 191 malignant malignant## 193    benign    benign## 196    benign    benign## 199    benign    benign## 203    benign    benign## 206 malignant malignant## 210    benign    benign## 215 malignant malignant## 228 malignant malignant## 231 malignant malignant## 232 malignant malignant## 239 malignant malignant## 240 malignant malignant## 244    benign    benign## 245    benign    benign## 246    benign    benign## 253    benign malignant## 254 malignant malignant## 255 malignant malignant## 261 malignant malignant## 272    benign    benign## 274 malignant malignant## 275    benign    benign## 277    benign    benign## 284 malignant malignant## 287 malignant malignant## 288    benign    benign## 291    benign    benign## 297    benign malignant## 299    benign    benign## 301 malignant malignant## 304    benign    benign## 311    benign    benign## 312    benign    benign## 313 malignant malignant## 314    benign    benign## 317 malignant malignant## 319    benign    benign## 326    benign    benign## 329 malignant malignant## 332    benign    benign## 335 malignant malignant## 339    benign    benign## 341 malignant malignant## 343    benign    benign## 344    benign    benign## 346    benign    benign## 351    benign    benign## 354 malignant malignant## 368 malignant malignant## 369    benign    benign## 373    benign    benign## 381    benign    benign## 383    benign    benign## 395    benign    benign## 405    benign    benign## 407    benign    benign## 408    benign    benign## 413 malignant malignant## 416    benign    benign## 417 malignant malignant## 425    benign    benign## 426 malignant malignant## 429    benign    benign## 430    benign    benign## 431    benign    benign## 434    benign    benign## 437 malignant malignant## 448    benign    benign## 450 malignant malignant## 452    benign    benign## 453    benign    benign## 463    benign    benign## 466 malignant malignant## 467 malignant malignant## 469    benign    benign## 470    benign    benign## 479    benign    benign## 480 malignant malignant## 481    benign    benign## 488 malignant malignant## 498    benign    benign## 502    benign    benign## 505    benign    benign## 509    benign    benign## 511    benign    benign## 519    benign    benign## 520 malignant malignant## 522    benign    benign## 524 malignant malignant## 529    benign    benign## 532    benign    benign## 536    benign    benign## 539    benign    benign## 540    benign    benign## 546    benign    benign## 548    benign    benign## 551    benign    benign## 554    benign malignant## 557    benign    benign## 560    benign    benign## 564    benign    benign## 566 malignant malignant## 570 malignant malignant## 573    benign    benign## 574    benign    benign## 575 malignant malignant## 578    benign    benign## 579    benign    benign## 580    benign    benign## 583 malignant malignant## 596    benign    benign## 598    benign    benign## 600    benign    benign## 601    benign    benign## 603    benign    benign## 605 malignant malignant## 606 malignant malignant## 608    benign    benign## 609 malignant malignant## 611 malignant malignant## 613 malignant malignant## 628    benign    benign## 629    benign    benign## 632    benign    benign## 638    benign    benign## 640    benign    benign## 641    benign    benign## 646    benign    benign## 648    benign    benign## 655    benign    benign## 656    benign    benign## 658    benign malignant## 660    benign    benign## 665    benign    benign## 667    benign    benign## 668    benign    benign## 670 malignant malignant## 672    benign    benign## 676    benign    benign## 678    benign    benign## 679    benign    benign## 680    benign    benign## 681 malignant malignant## 684    benign    benign## 686    benign    benign## 694    benign    benign
dtree.pref <- table(df.test$class,class,dnn = c("Acutal","Predict"))#生成混淆矩陣acc <- sum(diag(dtree.pref))/nrow(df.test)*100 #計(jì)算準(zhǔn)確度print(acc)
## [1] 97.07317

結(jié)果顯示準(zhǔn)確率達(dá)到97%

  • 16.2.2.2 條件決策樹Conditional Inference Tree(ctree)

1)建模-語法

library(partykit)fit.ctree <- ctree(formula, data=, control = rpart.control(), ...)plot(fit.ctree)

2)舉例

library(partykit)
## Warning: 程輯包'partykit'是用R版本4.3.2 來建造的
## 載入需要的程輯包:libcoin
## Warning: 程輯包'libcoin'是用R版本4.3.2 來建造的
fit.ctree <- ctree(class~., data=df.train)plot(fit.ctree)
1.webp (3).jpg
pred <- predict(object = fit.ctree,newdata = df.test,type = "response")pred
##         3         5         6         8         9        16        17        21 ##    benign    benign malignant    benign    benign malignant    benign malignant ##        25        27        28        30        33        38        39        46 ##    benign    benign    benign    benign malignant    benign malignant    benign ##        49        50        57        58        59        64        71        74 ##    benign malignant malignant    benign malignant    benign    benign malignant ##        75        82        83        84        87        92        93        94 ## malignant    benign    benign    benign malignant    benign    benign    benign ##        95        98       111       112       113       114       119       126 ##    benign    benign    benign malignant malignant malignant    benign    benign ##       130       131       132       134       135       136       139       142 ##    benign    benign    benign    benign    benign    benign    benign    benign ##       143       152       155       157       163       173       178       179 ## malignant malignant    benign    benign    benign    benign malignant    benign ##       182       186       191       193       196       199       203       206 ##    benign    benign malignant    benign    benign    benign    benign malignant ##       210       215       228       231       232       239       240       244 ##    benign malignant malignant malignant malignant malignant malignant    benign ##       245       246       253       254       255       261       272       274 ##    benign    benign malignant malignant malignant malignant    benign malignant ##       275       277       284       287       288       291       297       299 ##    benign    benign malignant malignant    benign    benign malignant    benign ##       301       304       311       312       313       314       317       319 ## malignant    benign    benign    benign malignant    benign malignant    benign ##       326       329       332       335       339       341       343       344 ##    benign malignant    benign malignant    benign malignant    benign    benign ##       346       351       354       368       369       373       381       383 ##    benign    benign malignant malignant    benign    benign    benign    benign ##       395       405       407       408       413       416       417       425 ##    benign    benign    benign    benign malignant    benign malignant    benign ##       426       429       430       431       434       437       448       450 ## malignant    benign    benign    benign    benign malignant    benign malignant ##       452       453       463       466       467       469       470       479 ##    benign    benign    benign malignant malignant    benign    benign    benign ##       480       481       488       498       502       505       509       511 ## malignant    benign malignant    benign    benign    benign    benign    benign ##       519       520       522       524       529       532       536       539 ##    benign malignant    benign malignant    benign    benign    benign    benign ##       540       546       548       551       554       557       560       564 ##    benign    benign    benign    benign malignant    benign    benign    benign ##       566       570       573       574       575       578       579       580 ## malignant malignant    benign    benign malignant    benign    benign    benign ##       583       596       598       600       601       603       605       606 ## malignant    benign    benign    benign    benign    benign malignant malignant ##       608       609       611       613       628       629       632       638 ##    benign malignant malignant malignant    benign    benign    benign    benign ##       640       641       646       648       655       656       658       660 ##    benign    benign    benign    benign    benign    benign malignant    benign ##       665       667       668       670       672       676       678       679 ##    benign    benign    benign malignant    benign    benign    benign    benign ##       680       681       684       686       694 ##    benign malignant    benign    benign    benign ## Levels: benign malignant
data.frame(Actual=df.test$class,Predict=pred)#比較真實(shí)的和預(yù)測(cè)的結(jié)果
##        Actual   Predict## 3      benign    benign## 5      benign    benign## 6   malignant malignant## 8      benign    benign## 9      benign    benign## 16  malignant malignant## 17     benign    benign## 21  malignant malignant## 25     benign    benign## 27     benign    benign## 28     benign    benign## 30     benign    benign## 33  malignant malignant## 38     benign    benign## 39  malignant malignant## 46     benign    benign## 49     benign    benign## 50  malignant malignant## 57  malignant malignant## 58  malignant    benign## 59  malignant malignant## 64  malignant    benign## 71     benign    benign## 74  malignant malignant## 75  malignant malignant## 82     benign    benign## 83     benign    benign## 84     benign    benign## 87  malignant malignant## 92     benign    benign## 93     benign    benign## 94     benign    benign## 95     benign    benign## 98     benign    benign## 111    benign    benign## 112 malignant malignant## 113 malignant malignant## 114 malignant malignant## 119    benign    benign## 126    benign    benign## 130    benign    benign## 131    benign    benign## 132    benign    benign## 134    benign    benign## 135    benign    benign## 136    benign    benign## 139    benign    benign## 142    benign    benign## 143 malignant malignant## 152 malignant malignant## 155    benign    benign## 157    benign    benign## 163    benign    benign## 173    benign    benign## 178 malignant malignant## 179    benign    benign## 182    benign    benign## 186    benign    benign## 191 malignant malignant## 193    benign    benign## 196    benign    benign## 199    benign    benign## 203    benign    benign## 206 malignant malignant## 210    benign    benign## 215 malignant malignant## 228 malignant malignant## 231 malignant malignant## 232 malignant malignant## 239 malignant malignant## 240 malignant malignant## 244    benign    benign## 245    benign    benign## 246    benign    benign## 253    benign malignant## 254 malignant malignant## 255 malignant malignant## 261 malignant malignant## 272    benign    benign## 274 malignant malignant## 275    benign    benign## 277    benign    benign## 284 malignant malignant## 287 malignant malignant## 288    benign    benign## 291    benign    benign## 297    benign malignant## 299    benign    benign## 301 malignant malignant## 304    benign    benign## 311    benign    benign## 312    benign    benign## 313 malignant malignant## 314    benign    benign## 317 malignant malignant## 319    benign    benign## 326    benign    benign## 329 malignant malignant## 332    benign    benign## 335 malignant malignant## 339    benign    benign## 341 malignant malignant## 343    benign    benign## 344    benign    benign## 346    benign    benign## 351    benign    benign## 354 malignant malignant## 368 malignant malignant## 369    benign    benign## 373    benign    benign## 381    benign    benign## 383    benign    benign## 395    benign    benign## 405    benign    benign## 407    benign    benign## 408    benign    benign## 413 malignant malignant## 416    benign    benign## 417 malignant malignant## 425    benign    benign## 426 malignant malignant## 429    benign    benign## 430    benign    benign## 431    benign    benign## 434    benign    benign## 437 malignant malignant## 448    benign    benign## 450 malignant malignant## 452    benign    benign## 453    benign    benign## 463    benign    benign## 466 malignant malignant## 467 malignant malignant## 469    benign    benign## 470    benign    benign## 479    benign    benign## 480 malignant malignant## 481    benign    benign## 488 malignant malignant## 498    benign    benign## 502    benign    benign## 505    benign    benign## 509    benign    benign## 511    benign    benign## 519    benign    benign## 520 malignant malignant## 522    benign    benign## 524 malignant malignant## 529    benign    benign## 532    benign    benign## 536    benign    benign## 539    benign    benign## 540    benign    benign## 546    benign    benign## 548    benign    benign## 551    benign    benign## 554    benign malignant## 557    benign    benign## 560    benign    benign## 564    benign    benign## 566 malignant malignant## 570 malignant malignant## 573    benign    benign## 574    benign    benign## 575 malignant malignant## 578    benign    benign## 579    benign    benign## 580    benign    benign## 583 malignant malignant## 596    benign    benign## 598    benign    benign## 600    benign    benign## 601    benign    benign## 603    benign    benign## 605 malignant malignant## 606 malignant malignant## 608    benign    benign## 609 malignant malignant## 611 malignant malignant## 613 malignant malignant## 628    benign    benign## 629    benign    benign## 632    benign    benign## 638    benign    benign## 640    benign    benign## 641    benign    benign## 646    benign    benign## 648    benign    benign## 655    benign    benign## 656    benign    benign## 658    benign malignant## 660    benign    benign## 665    benign    benign## 667    benign    benign## 668    benign    benign## 670 malignant malignant## 672    benign    benign## 676    benign    benign## 678    benign    benign## 679    benign    benign## 680    benign    benign## 681 malignant malignant## 684    benign    benign## 686    benign    benign## 694    benign    benign
t <- table(df.test$class,pred,dnn = c("Acutal","Predict"))#生成混淆矩陣acc <- sum(diag(t))/nrow(df.test)*100 #計(jì)算準(zhǔn)確度print(acc)
## [1] 97.07317

結(jié)果顯示條件決策樹方法下的結(jié)果準(zhǔn)確率也是97%

16.2.3 隨機(jī)森林(random forest, RF)

需要用的R包是randomForest,該包是基于經(jīng)典決策樹生成隨機(jī)森林症见。

  • 16.2.3.1 語法

randomForest()函數(shù)的用法可以參考??randomForest()-randomForest::randomForest

library(randomForest)set.seed()fit.forest <- randomForest(y~.,data=train, importance= )fit.forestimportance(fit.forest,type=2)forest.pred <- predict(fit.forest,test)data.frame(Actual=test$y,Predict=forest.pred)#比較真實(shí)的和預(yù)測(cè)的結(jié)果randomForest.pref <- table(test$y,forest.pred,dnn = c("Acutal","Predict"))#生成混淆矩陣acc <- sum(diag(randomForest.pref))/nrow(test)*100 #計(jì)算準(zhǔn)確度print(acc)

注:

1)隨機(jī)森林可以計(jì)算/度量變量的重要性喂走,即設(shè)置importance=TRUE

importance: 這是一個(gè)邏輯值,用于指定是否計(jì)算變量的重要性谋作。設(shè)置為TRUE表示計(jì)算變量的重要性芋肠,設(shè)置為FALSE表示不計(jì)算。變量的重要性指標(biāo)可以幫助了解哪些變量對(duì)于模型的預(yù)測(cè)性能最為關(guān)鍵遵蚜。

2)type的設(shè)置:

type = 1:使用MeanDecreaseAccuracy方法計(jì)算變量重要性帖池。該方法通過對(duì)每個(gè)決策樹進(jìn)行預(yù)測(cè),并比較預(yù)測(cè)準(zhǔn)確率的變化來評(píng)估變量的重要性吭净。它衡量的是每個(gè)變量在模型預(yù)測(cè)中對(duì)準(zhǔn)確率的影響睡汹。

type = 2:使用MeanDecreaseGini方法計(jì)算變量重要性。該方法通過測(cè)量每個(gè)變量在決策樹節(jié)點(diǎn)中用于分割樣本的不純度減少來評(píng)估變量的重要性寂殉。它衡量的是每個(gè)變量在模型中的分割能力囚巴。

type = 3:使用MeanDecreaseImpurity方法計(jì)算變量重要性。該方法與MeanDecreaseGini方法類似友扰,但在計(jì)算每個(gè)變量的重要性時(shí)彤叉,考慮了每個(gè)變量在樹的分割中使用的權(quán)重。

type = “node”:計(jì)算每個(gè)變量在每個(gè)節(jié)點(diǎn)上被使用的次數(shù)村怪。

  • 16.2.3.2 舉例

library(randomForest)
## Warning: 程輯包'randomForest'是用R版本4.3.2 來建造的
## randomForest 4.7-1.1
## Type rfNews() to see new features/changes/bug fixes.
## ## 載入程輯包:'randomForest'
## The following object is masked from 'package:rattle':## ##     importance
## The following object is masked from 'package:psych':## ##     outlier
## The following object is masked from 'package:ggplot2':## ##     margin
## The following object is masked from 'package:dplyr':## ##     combine
set.seed(1234)fit.forest <- randomForest(class~.,data=df.train, importance=TRUE)fit.forest
## ## Call:##  randomForest(formula = class ~ ., data = df.train, importance = TRUE) ##                Type of random forest: classification##                      Number of trees: 500## No. of variables tried at each split: 3## ##         OOB estimate of  error rate: 2.93%## Confusion matrix:##           benign malignant class.error## benign       293         9  0.02980132## malignant      5       171  0.02840909
importance(fit.forest,type = 2)
##                          MeanDecreaseGini## clumpThickness                   9.794852## sizeUniformity                  58.635963## shapeUniformity                 49.754466## maginalAdhesion                  8.373530## singleEpithelialCellSize        16.814313## bareNuclei                      36.621347## blandChromatin                  25.179804## normalNucleoli                  14.177153## mitosis                          2.015803

可以看到sizeUniformity是最重要的變量秽浇,mitosis 是最不重要的變量。

forest.pred <- predict(fit.forest,df.test)data.frame(Actual=df.test$class,Predict=forest.pred)#比較真實(shí)的和預(yù)測(cè)的結(jié)果
##        Actual   Predict## 3      benign    benign## 5      benign    benign## 6   malignant malignant## 8      benign    benign## 9      benign    benign## 16  malignant    benign## 17     benign    benign## 21  malignant malignant## 25     benign    benign## 27     benign    benign## 28     benign    benign## 30     benign    benign## 33  malignant malignant## 38     benign    benign## 39  malignant malignant## 46     benign    benign## 49     benign    benign## 50  malignant malignant## 57  malignant malignant## 58  malignant    benign## 59  malignant malignant## 64  malignant    benign## 71     benign    benign## 74  malignant malignant## 75  malignant malignant## 82     benign    benign## 83     benign    benign## 84     benign    benign## 87  malignant malignant## 92     benign    benign## 93     benign    benign## 94     benign    benign## 95     benign    benign## 98     benign    benign## 111    benign    benign## 112 malignant malignant## 113 malignant malignant## 114 malignant malignant## 119    benign    benign## 126    benign    benign## 130    benign    benign## 131    benign    benign## 132    benign    benign## 134    benign    benign## 135    benign    benign## 136    benign    benign## 139    benign    benign## 142    benign    benign## 143 malignant malignant## 152 malignant malignant## 155    benign    benign## 157    benign    benign## 163    benign    benign## 173    benign    benign## 178 malignant malignant## 179    benign    benign## 182    benign    benign## 186    benign    benign## 191 malignant malignant## 193    benign    benign## 196    benign    benign## 199    benign    benign## 203    benign    benign## 206 malignant malignant## 210    benign    benign## 215 malignant malignant## 228 malignant malignant## 231 malignant malignant## 232 malignant malignant## 239 malignant malignant## 240 malignant malignant## 244    benign    benign## 245    benign    benign## 246    benign    benign## 253    benign malignant## 254 malignant malignant## 255 malignant malignant## 261 malignant malignant## 272    benign    benign## 274 malignant malignant## 275    benign    benign## 277    benign    benign## 284 malignant malignant## 287 malignant malignant## 288    benign    benign## 291    benign    benign## 297    benign malignant## 299    benign    benign## 301 malignant malignant## 304    benign    benign## 311    benign    benign## 312    benign    benign## 313 malignant malignant## 314    benign    benign## 317 malignant malignant## 319    benign    benign## 326    benign    benign## 329 malignant malignant## 332    benign    benign## 335 malignant malignant## 339    benign    benign## 341 malignant malignant## 343    benign    benign## 344    benign    benign## 346    benign    benign## 351    benign    benign## 354 malignant malignant## 368 malignant malignant## 369    benign    benign## 373    benign    benign## 381    benign    benign## 383    benign    benign## 395    benign    benign## 405    benign    benign## 407    benign    benign## 408    benign    benign## 413 malignant malignant## 416    benign    benign## 417 malignant malignant## 425    benign    benign## 426 malignant malignant## 429    benign    benign## 430    benign    benign## 431    benign    benign## 434    benign    benign## 437 malignant malignant## 448    benign    benign## 450 malignant malignant## 452    benign    benign## 453    benign    benign## 463    benign    benign## 466 malignant malignant## 467 malignant malignant## 469    benign    benign## 470    benign    benign## 479    benign    benign## 480 malignant malignant## 481    benign    benign## 488 malignant malignant## 498    benign    benign## 502    benign    benign## 505    benign    benign## 509    benign    benign## 511    benign    benign## 519    benign    benign## 520 malignant malignant## 522    benign    benign## 524 malignant malignant## 529    benign    benign## 532    benign    benign## 536    benign    benign## 539    benign    benign## 540    benign    benign## 546    benign    benign## 548    benign    benign## 551    benign    benign## 554    benign    benign## 557    benign    benign## 560    benign    benign## 564    benign    benign## 566 malignant malignant## 570 malignant malignant## 573    benign    benign## 574    benign    benign## 575 malignant malignant## 578    benign    benign## 579    benign    benign## 580    benign    benign## 583 malignant malignant## 596    benign    benign## 598    benign    benign## 600    benign    benign## 601    benign    benign## 603    benign    benign## 605 malignant malignant## 606 malignant malignant## 608    benign    benign## 609 malignant malignant## 611 malignant malignant## 613 malignant malignant## 628    benign    benign## 629    benign    benign## 632    benign    benign## 638    benign    benign## 640    benign    benign## 641    benign    benign## 646    benign    benign## 648    benign    benign## 655    benign    benign## 656    benign    benign## 658    benign    benign## 660    benign    benign## 665    benign    benign## 667    benign    benign## 668    benign    benign## 670 malignant malignant## 672    benign    benign## 676    benign    benign## 678    benign    benign## 679    benign    benign## 680    benign    benign## 681 malignant malignant## 684    benign    benign## 686    benign    benign## 694    benign    benign
randomForest.pref<- table(df.test$class,forest.pred,dnn = c("Acutal","Predict"))#生成混淆矩陣acc <- sum(diag(randomForest.pref))/nrow(df.test)*100 #計(jì)算準(zhǔn)確度print(acc)
## [1] 97.56098
plot(fit.forest)#生成隨機(jī)森林的圖片
1.webp (4).jpg

結(jié)果顯示隨機(jī)森林預(yù)測(cè)的準(zhǔn)確率達(dá)到97%甚负。

16.2.4 支持向量機(jī)(support vector machines,SVM)

SVM是一類可用于分類和回歸的監(jiān)督機(jī)器學(xué)習(xí)模型柬焕。

SVM 旨在多維空間中找到一個(gè)能將全部觀測(cè)值分成兩類的最優(yōu)平面审残,這一平面使得兩類中距離最近的觀測(cè)值的間距(margin)盡可能大,在間距邊界上的點(diǎn)被稱為支持向量击喂,分割的超平面位于間距的中間维苔。

  • 16.2.4.1 語法

kernlab包的ksvm()函數(shù)和e1071包中的svm()函數(shù)都可以實(shí)現(xiàn)SYM,其中ksvm()功能更強(qiáng)大懂昂,但svm()相對(duì)更簡(jiǎn)單介时。

library(e1071)set.seed()fit.svm <- svm(y~.,data= train)fit.svmsvm.pred <- predict(fit.svm,test)#test指訓(xùn)練集data.frame(Actual=test$y,Predict=svm.pred)#比較真實(shí)的和預(yù)測(cè)的結(jié)果,y指因變量svm.pref <- table(test$y,svm.pred,dnn = c("Acutal","Predict"))#生成混淆矩陣acc <- sum(diag(svm.pref))/nrow(test)*100 #計(jì)算準(zhǔn)確度print(acc)
  • 16.2.4.2 舉例

library(e1071)
## Warning: 程輯包'e1071'是用R版本4.3.2 來建造的
## ## 載入程輯包:'e1071'
## The following object is masked from 'package:flexclust':## ##     bclust
## The following object is masked from 'package:Hmisc':## ##     impute
set.seed(1234)fit.svm <- svm(class~.,data= df.train)fit.svm
## ## Call:## svm(formula = class ~ ., data = df.train)## ## ## Parameters:##    SVM-Type:  C-classification ##  SVM-Kernel:  radial ##        cost:  1 ## ## Number of Support Vectors:  84
svm.pred <- predict(fit.svm,df.test)svm.pred
##         3         5         6         8         9        16        17        21 ##    benign    benign malignant    benign    benign malignant    benign malignant ##        25        27        28        30        33        38        39        46 ##    benign    benign    benign    benign malignant    benign malignant    benign ##        49        50        57        58        59        64        71        74 ##    benign malignant malignant malignant malignant malignant    benign malignant ##        75        82        83        84        87        92        93        94 ## malignant    benign    benign    benign malignant    benign    benign    benign ##        95        98       111       112       113       114       119       126 ##    benign    benign    benign malignant malignant malignant    benign    benign ##       130       131       132       134       135       136       139       142 ## malignant    benign    benign    benign    benign    benign    benign    benign ##       143       152       155       157       163       173       178       179 ## malignant malignant    benign    benign    benign    benign malignant    benign ##       182       186       191       193       196       199       203       206 ##    benign    benign malignant    benign    benign    benign    benign malignant ##       210       215       228       231       232       239       240       244 ##    benign malignant malignant malignant malignant malignant malignant    benign ##       245       246       253       254       255       261       272       274 ##    benign    benign malignant malignant malignant malignant    benign malignant ##       275       277       284       287       288       291       297       299 ##    benign    benign malignant malignant    benign    benign malignant    benign ##       301       304       311       312       313       314       317       319 ## malignant    benign    benign    benign malignant    benign malignant    benign ##       326       329       332       335       339       341       343       344 ##    benign malignant    benign malignant    benign malignant    benign    benign ##       346       351       354       368       369       373       381       383 ##    benign    benign malignant malignant    benign    benign    benign    benign ##       395       405       407       408       413       416       417       425 ##    benign    benign    benign    benign malignant    benign malignant    benign ##       426       429       430       431       434       437       448       450 ## malignant    benign    benign    benign    benign malignant    benign malignant ##       452       453       463       466       467       469       470       479 ##    benign    benign    benign malignant malignant    benign    benign    benign ##       480       481       488       498       502       505       509       511 ## malignant    benign malignant    benign    benign    benign    benign    benign ##       519       520       522       524       529       532       536       539 ##    benign malignant    benign malignant    benign    benign    benign    benign ##       540       546       548       551       554       557       560       564 ##    benign    benign    benign    benign    benign    benign    benign    benign ##       566       570       573       574       575       578       579       580 ## malignant malignant    benign    benign malignant    benign    benign    benign ##       583       596       598       600       601       603       605       606 ## malignant    benign    benign    benign    benign    benign malignant malignant ##       608       609       611       613       628       629       632       638 ##    benign malignant malignant malignant    benign    benign    benign    benign ##       640       641       646       648       655       656       658       660 ##    benign    benign    benign    benign    benign    benign malignant    benign ##       665       667       668       670       672       676       678       679 ##    benign    benign    benign malignant    benign    benign    benign    benign ##       680       681       684       686       694 ##    benign malignant    benign    benign    benign ## Levels: benign malignant
data.frame(Actual=df.test$class,Predict=svm.pred)#比較真實(shí)的和預(yù)測(cè)的結(jié)果
##        Actual   Predict## 3      benign    benign## 5      benign    benign## 6   malignant malignant## 8      benign    benign## 9      benign    benign## 16  malignant malignant## 17     benign    benign## 21  malignant malignant## 25     benign    benign## 27     benign    benign## 28     benign    benign## 30     benign    benign## 33  malignant malignant## 38     benign    benign## 39  malignant malignant## 46     benign    benign## 49     benign    benign## 50  malignant malignant## 57  malignant malignant## 58  malignant malignant## 59  malignant malignant## 64  malignant malignant## 71     benign    benign## 74  malignant malignant## 75  malignant malignant## 82     benign    benign## 83     benign    benign## 84     benign    benign## 87  malignant malignant## 92     benign    benign## 93     benign    benign## 94     benign    benign## 95     benign    benign## 98     benign    benign## 111    benign    benign## 112 malignant malignant## 113 malignant malignant## 114 malignant malignant## 119    benign    benign## 126    benign    benign## 130    benign malignant## 131    benign    benign## 132    benign    benign## 134    benign    benign## 135    benign    benign## 136    benign    benign## 139    benign    benign## 142    benign    benign## 143 malignant malignant## 152 malignant malignant## 155    benign    benign## 157    benign    benign## 163    benign    benign## 173    benign    benign## 178 malignant malignant## 179    benign    benign## 182    benign    benign## 186    benign    benign## 191 malignant malignant## 193    benign    benign## 196    benign    benign## 199    benign    benign## 203    benign    benign## 206 malignant malignant## 210    benign    benign## 215 malignant malignant## 228 malignant malignant## 231 malignant malignant## 232 malignant malignant## 239 malignant malignant## 240 malignant malignant## 244    benign    benign## 245    benign    benign## 246    benign    benign## 253    benign malignant## 254 malignant malignant## 255 malignant malignant## 261 malignant malignant## 272    benign    benign## 274 malignant malignant## 275    benign    benign## 277    benign    benign## 284 malignant malignant## 287 malignant malignant## 288    benign    benign## 291    benign    benign## 297    benign malignant## 299    benign    benign## 301 malignant malignant## 304    benign    benign## 311    benign    benign## 312    benign    benign## 313 malignant malignant## 314    benign    benign## 317 malignant malignant## 319    benign    benign## 326    benign    benign## 329 malignant malignant## 332    benign    benign## 335 malignant malignant## 339    benign    benign## 341 malignant malignant## 343    benign    benign## 344    benign    benign## 346    benign    benign## 351    benign    benign## 354 malignant malignant## 368 malignant malignant## 369    benign    benign## 373    benign    benign## 381    benign    benign## 383    benign    benign## 395    benign    benign## 405    benign    benign## 407    benign    benign## 408    benign    benign## 413 malignant malignant## 416    benign    benign## 417 malignant malignant## 425    benign    benign## 426 malignant malignant## 429    benign    benign## 430    benign    benign## 431    benign    benign## 434    benign    benign## 437 malignant malignant## 448    benign    benign## 450 malignant malignant## 452    benign    benign## 453    benign    benign## 463    benign    benign## 466 malignant malignant## 467 malignant malignant## 469    benign    benign## 470    benign    benign## 479    benign    benign## 480 malignant malignant## 481    benign    benign## 488 malignant malignant## 498    benign    benign## 502    benign    benign## 505    benign    benign## 509    benign    benign## 511    benign    benign## 519    benign    benign## 520 malignant malignant## 522    benign    benign## 524 malignant malignant## 529    benign    benign## 532    benign    benign## 536    benign    benign## 539    benign    benign## 540    benign    benign## 546    benign    benign## 548    benign    benign## 551    benign    benign## 554    benign    benign## 557    benign    benign## 560    benign    benign## 564    benign    benign## 566 malignant malignant## 570 malignant malignant## 573    benign    benign## 574    benign    benign## 575 malignant malignant## 578    benign    benign## 579    benign    benign## 580    benign    benign## 583 malignant malignant## 596    benign    benign## 598    benign    benign## 600    benign    benign## 601    benign    benign## 603    benign    benign## 605 malignant malignant## 606 malignant malignant## 608    benign    benign## 609 malignant malignant## 611 malignant malignant## 613 malignant malignant## 628    benign    benign## 629    benign    benign## 632    benign    benign## 638    benign    benign## 640    benign    benign## 641    benign    benign## 646    benign    benign## 648    benign    benign## 655    benign    benign## 656    benign    benign## 658    benign malignant## 660    benign    benign## 665    benign    benign## 667    benign    benign## 668    benign    benign## 670 malignant malignant## 672    benign    benign## 676    benign    benign## 678    benign    benign## 679    benign    benign## 680    benign    benign## 681 malignant malignant## 684    benign    benign## 686    benign    benign## 694    benign    benign
svm.pref <- table(df.test$class,svm.pred,dnn = c("Acutal","Predict"))#生成混淆矩陣svm.pref
##            Predict## Acutal      benign malignant##   benign       138         4##   malignant      0        63
acc <- sum(diag(svm.pref))/nrow(df.test)*100 #計(jì)算準(zhǔn)確度print(acc)
## [1] 98.04878

結(jié)果顯示預(yù)測(cè)準(zhǔn)確度達(dá)到98%。

16.3 選擇預(yù)測(cè)效果最好的模型

首先凌彬,與混淆矩陣對(duì)應(yīng)的也有一個(gè)2x2矩陣沸柔,分別為第一行:TP(True positive)、FN(False negative)铲敛;第二行:FP(False positive)和TN(True negative)褐澎。在這2x2矩陣中,只有對(duì)角線的TP和TN是正確的伐蒋,另外2個(gè)是錯(cuò)誤的工三。

一般我們通過敏感度、特異性先鱼、正例命中率俭正、負(fù)例命中率和準(zhǔn)確度來度量模型預(yù)測(cè)的好壞:

1.webp (5).jpg

16.3.1 語法

performance <- function(table,n=2){  if(!all(dim(table)==c(2,2)))    stop("Must be a 2x2 table")  tn=table[1,1]  fp=table[1,2]  fn=table[2,1]  tp=table[2,2]  sensitivity=tp/(tp+fn)  specificity=tn/(tn+fp)  ppp=tp/(tp+fp)  npp=tn/(tn+fn)  hitrate=(tp+tn)/(tp+tn+fp+fn)  result <- paste("sensitivity= ",round(sensitivity,n),                  "\nspecificity= ",round(specificity,n),                  "\nPositive Predictive Value= ",round(ppp,n),                  "\nNegative Predictive Value= ",round(npp,n),                  "\nAccuracy= ",round(hitrate,n),"\n",sep = "")  cat(result)}performance()

這段代碼中的tn tp fp fn等在表格中的位置是根據(jù)前面數(shù)據(jù)集預(yù)測(cè)得到的混淆矩陣進(jìn)行一一對(duì)應(yīng)的,在這一數(shù)據(jù)集預(yù)測(cè)中焙畔,benign良性為真陰性(tn),malignant惡性為真陽性(tp)掸读,因?yàn)槲覀円獧z測(cè)惡性的占比。

cat() 是一個(gè)用于將文本或表達(dá)式輸出到控制臺(tái)的函數(shù)宏多。它的作用類似于 print() 函數(shù)儿惫,但在輸出時(shí)不會(huì)自動(dòng)添加換行符。在這段代碼中伸但,cat(result) 用于將計(jì)算結(jié)果 result 輸出到控制臺(tái)肾请。這樣,當(dāng)你調(diào)用 performance() 函數(shù)時(shí)更胖,會(huì)將計(jì)算結(jié)果打印到控制臺(tái)上铛铁,而不是返回一個(gè)值。

16.3.2 舉例

performance <- function(table,n=2){  if(!all(dim(table)==c(2,2)))    stop("Must be a 2x2 table")  tn=table[1,1]  fp=table[1,2]  fn=table[2,1]  tp=table[2,2]  sensitivity=tp/(tp+fn)  specificity=tn/(tn+fp)  ppp=tp/(tp+fp)  npp=tn/(tn+fn)  hitrate=(tp+tn)/(tp+tn+fp+fn)  result <- paste("sensitivity= ",round(sensitivity,n),                  "\nspecificity= ",round(specificity,n),                  "\nPositive Predictive Value= ",round(ppp,n),                  "\nNegative Predictive Value= ",round(npp,n),                  "\nAccuracy= ",round(hitrate,n),"\n",sep = "")  cat(result)}performance(logistic.pref)
## sensitivity= 0.95## specificity= 0.99## Positive Predictive Value= 0.97## Negative Predictive Value= 0.98## Accuracy= 0.98
performance(dtree.pref)
## sensitivity= 0.97## specificity= 0.97## Positive Predictive Value= 0.94## Negative Predictive Value= 0.99## Accuracy= 0.97
performance(randomForest.pref)
## sensitivity= 0.95## specificity= 0.99## Positive Predictive Value= 0.97## Negative Predictive Value= 0.98## Accuracy= 0.98
performance(svm.pref)
## sensitivity= 1## specificity= 0.97## Positive Predictive Value= 0.94## Negative Predictive Value= 1## Accuracy= 0.98

完整教程請(qǐng)查看

R語言基礎(chǔ)學(xué)習(xí)手冊(cè)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末函喉,一起剝皮案震驚了整個(gè)濱河市避归,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌管呵,老刑警劉巖梳毙,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異捐下,居然都是意外死亡账锹,警方通過查閱死者的電腦和手機(jī)萌业,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奸柬,“玉大人生年,你說我怎么就攤上這事±龋” “怎么了抱婉?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長桌粉。 經(jīng)常有香客問我蒸绩,道長,這世上最難降的妖魔是什么铃肯? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任患亿,我火速辦了婚禮,結(jié)果婚禮上押逼,老公的妹妹穿的比我還像新娘步藕。我一直安慰自己,他們只是感情好挑格,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布咙冗。 她就那樣靜靜地躺著,像睡著了一般恕齐。 火紅的嫁衣襯著肌膚如雪乞娄。 梳的紋絲不亂的頭發(fā)上瞬逊,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天显歧,我揣著相機(jī)與錄音,去河邊找鬼确镊。 笑死士骤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蕾域。 我是一名探鬼主播拷肌,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼旨巷!你這毒婦竟也來了巨缘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤采呐,失蹤者是張志新(化名)和其女友劉穎若锁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斧吐,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡又固,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年仲器,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仰冠。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乏冀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出洋只,到底是詐尸還是另有隱情辆沦,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布识虚,位于F島的核電站众辨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏舷礼。R本人自食惡果不足惜鹃彻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望妻献。 院中可真熱鬧蛛株,春花似錦、人聲如沸育拨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熬丧。三九已至笋粟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間析蝴,已是汗流浹背害捕。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闷畸,地道東北人尝盼。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像佑菩,于是被迫代替她去往敵國和親盾沫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容