如有研究需要数据,请与QQ1807232;或微信扫码添加客服咨询

GEE学习笔记 八十六:分类中的特征重要性分析

使用GEE做特征重要性分析。

之前在GEE中做随机森林分类时候,很多人都在问如何做特征重要性分析?但是在GEE之前并没有相关API可以做特征重要性分析,最新的API更新后GEE也可以做特征重要性分析了。

1、目前常用的包含特征重要信息分析的分类方法包括:

(1)决策树

ee.Classifier.smileCart(maxNodes, minLeafPopulation)

(2)随机森林

ee.Classifier.smileRandomForest(numberOfTrees, variablesPerSplit, minLeafPopulation, bagFraction, maxNodes, seed)

    这两个方法和之前的分类决策树和随机森林分类方法参数非常类似,只不过调用这两个定义方法在使用explain()方法就可以得到每个分类特征重要性的信息。

 

2、得到特征重要性的API方法:

 

    也就是之前在分类器中的方法explain,这个方法是最开始就有的,只不过是最近GEE官方加入了特征重要性的分析返回信息,下面通过一个具体例子说明一下如何使用以及具体输出。

 

具体代码:

  1. var roi =

  2.  
  3.     /* color: #d63000 */

  4.  
  5.     /* shown: false */

  6.  
  7.     /* displayProperties: [

  8.  
  9.       {

  10.  
  11.         "type": "rectangle"

  12.  
  13.       }

  14.  
  15.     ] */

  16.  
  17.     ee.Geometry.Polygon(

  18.  
  19.         [[[114.23790821489501, 36.43657462800738],

  20.  
  21.           [114.23790821489501, 36.29834769127675],

  22.  
  23.           [114.49265369829345, 36.29834769127675],

  24.  
  25.           [114.49265369829345, 36.43657462800738]]], null, false),

  26.  
  27.     crop =

  28.  
  29.     /* color: #98ff00 */

  30.  
  31.     /* shown: false */

  32.  
  33.     ee.FeatureCollection(

  34.  
  35.         [ee.Feature(

  36.  
  37.             ee.Geometry.Point([114.31343922075439, 36.356156419842804]),

  38.  
  39.             {

  40.  
  41.               "type": 0,

  42.  
  43.               "system:index": "0"

  44.  
  45.             }),

  46.  
  47.         ee.Feature(

  48.  
  49.             ee.Geometry.Point([114.31056389269042, 36.35499859187555]),

  50.  
  51.             {

  52.  
  53.               "type": 0,

  54.  
  55.               "system:index": "1"

  56.  
  57.             }),

  58.  
  59.         ee.Feature(

  60.  
  61.             ee.Geometry.Point([114.31236633714843, 36.3529248270982]),

  62.  
  63.             {

  64.  
  65.               "type": 0,

  66.  
  67.               "system:index": "2"

  68.  
  69.             }),

  70.  
  71.         ee.Feature(

  72.  
  73.             ee.Geometry.Point([114.32159313615966, 36.35461840580203]),

  74.  
  75.             {

  76.  
  77.               "type": 0,

  78.  
  79.               "system:index": "3"

  80.  
  81.             }),

  82.  
  83.         ee.Feature(

  84.  
  85.             ee.Geometry.Point([114.32348141130615, 36.35638107103549]),

  86.  
  87.             {

  88.  
  89.               "type": 0,

  90.  
  91.               "system:index": "4"

  92.  
  93.             }),

  94.  
  95.         ee.Feature(

  96.  
  97.             ee.Geometry.Point([114.32936081346679, 36.35589720612248]),

  98.  
  99.             {

  100.  
  101.               "type": 0,

  102.  
  103.               "system:index": "5"

  104.  
  105.             }),

  106.  
  107.         ee.Feature(

  108.  
  109.             ee.Geometry.Point([114.33515438493896, 36.35565527253804]),

  110.  
  111.             {

  112.  
  113.               "type": 0,

  114.  
  115.               "system:index": "6"

  116.  
  117.             }),

  118.  
  119.         ee.Feature(

  120.  
  121.             ee.Geometry.Point([114.33545479234863, 36.35855842592195]),

  122.  
  123.             {

  124.  
  125.               "type": 0,

  126.  
  127.               "system:index": "7"

  128.  
  129.             }),

  130.  
  131.         ee.Feature(

  132.  
  133.             ee.Geometry.Point([114.29468521532226, 36.35679580999553]),

  134.  
  135.             {

  136.  
  137.               "type": 0,

  138.  
  139.               "system:index": "8"

  140.  
  141.             }),

  142.  
  143.         ee.Feature(

  144.  
  145.             ee.Geometry.Point([114.29979214128662, 36.34922647614173]),

  146.  
  147.             {

  148.  
  149.               "type": 0,

  150.  
  151.               "system:index": "9"

  152.  
  153.             }),

  154.  
  155.         ee.Feature(

  156.  
  157.             ee.Geometry.Point([114.28871998247314, 36.3387180531404]),

  158.  
  159.             {

  160.  
  161.               "type": 0,

  162.  
  163.               "system:index": "10"

  164.  
  165.             }),

  166.  
  167.         ee.Feature(

  168.  
  169.             ee.Geometry.Point([114.28279766496826, 36.33833778756726]),

  170.  
  171.             {

  172.  
  173.               "type": 0,

  174.  
  175.               "system:index": "11"

  176.  
  177.             }),

  178.  
  179.         ee.Feature(

  180.  
  181.             ee.Geometry.Point([114.39553627428222, 36.3299369018726]),

  182.  
  183.             {

  184.  
  185.               "type": 0,

  186.  
  187.               "system:index": "12"

  188.  
  189.             }),

  190.  
  191.         ee.Feature(

  192.  
  193.             ee.Geometry.Point([114.39725288805175, 36.32997147527504]),

  194.  
  195.             {

  196.  
  197.               "type": 0,

  198.  
  199.               "system:index": "13"

  200.  
  201.             }),

  202.  
  203.         ee.Feature(

  204.  
  205.             ee.Geometry.Point([114.39712414201904, 36.32796619257241]),

  206.  
  207.             {

  208.  
  209.               "type": 0,

  210.  
  211.               "system:index": "14"

  212.  
  213.             }),

  214.  
  215.         ee.Feature(

  216.  
  217.             ee.Geometry.Point([114.39918407854248, 36.3291762831369]),

  218.  
  219.             {

  220.  
  221.               "type": 0,

  222.  
  223.               "system:index": "15"

  224.  
  225.             }),

  226.  
  227.         ee.Feature(

  228.  
  229.             ee.Geometry.Point([114.39845451769042, 36.3274475765775]),

  230.  
  231.             {

  232.  
  233.               "type": 0,

  234.  
  235.               "system:index": "16"

  236.  
  237.             }),

  238.  
  239.         ee.Feature(

  240.  
  241.             ee.Geometry.Point([114.40467724260498, 36.32900341420687]),

  242.  
  243.             {

  244.  
  245.               "type": 0,

  246.  
  247.               "system:index": "17"

  248.  
  249.             }),

  250.  
  251.         ee.Feature(

  252.  
  253.             ee.Geometry.Point([114.40480598863769, 36.32734385296429]),

  254.  
  255.             {

  256.  
  257.               "type": 0,

  258.  
  259.               "system:index": "18"

  260.  
  261.             }),

  262.  
  263.         ee.Feature(

  264.  
  265.             ee.Geometry.Point([114.38210377153564, 36.33612529650057]),

  266.  
  267.             {

  268.  
  269.               "type": 0,

  270.  
  271.               "system:index": "19"

  272.  
  273.             }),

  274.  
  275.         ee.Feature(

  276.  
  277.             ee.Geometry.Point([114.38034424242187, 36.336194437797644]),

  278.  
  279.             {

  280.  
  281.               "type": 0,

  282.  
  283.               "system:index": "20"

  284.  
  285.             }),

  286.  
  287.         ee.Feature(

  288.  
  289.             ee.Geometry.Point([114.38098797258544, 36.34041194086619]),

  290.  
  291.             {

  292.  
  293.               "type": 0,

  294.  
  295.               "system:index": "21"

  296.  
  297.             }),

  298.  
  299.         ee.Feature(

  300.  
  301.             ee.Geometry.Point([114.38785442766357, 36.337473540724005]),

  302.  
  303.             {

  304.  
  305.               "type": 0,

  306.  
  307.               "system:index": "22"

  308.  
  309.             }),

  310.  
  311.         ee.Feature(

  312.  
  313.             ee.Geometry.Point([114.38532242235351, 36.34227863160822]),

  314.  
  315.             {

  316.  
  317.               "type": 0,

  318.  
  319.               "system:index": "23"

  320.  
  321.             })]),

  322.  
  323.     nocrop =

  324.  
  325.     /* color: #0b4a8b */

  326.  
  327.     /* shown: false */

  328.  
  329.     ee.FeatureCollection(

  330.  
  331.         [ee.Feature(

  332.  
  333.             ee.Geometry.Point([114.36832794603515, 36.344663782445146]),

  334.  
  335.             {

  336.  
  337.               "type": 1,

  338.  
  339.               "system:index": "0"

  340.  
  341.             }),

  342.  
  343.         ee.Feature(

  344.  
  345.             ee.Geometry.Point([114.37463650163818, 36.345078583829164]),

  346.  
  347.             {

  348.  
  349.               "type": 1,

  350.  
  351.               "system:index": "1"

  352.  
  353.             }),

  354.  
  355.         ee.Feature(

  356.  
  357.             ee.Geometry.Point([114.37742599901367, 36.34576991455905]),

  358.  
  359.             {

  360.  
  361.               "type": 1,

  362.  
  363.               "system:index": "2"

  364.  
  365.             }),

  366.  
  367.         ee.Feature(

  368.  
  369.             ee.Geometry.Point([114.378026813833, 36.34860430638123]),

  370.  
  371.             {

  372.  
  373.               "type": 1,

  374.  
  375.               "system:index": "3"

  376.  
  377.             }),

  378.  
  379.         ee.Feature(

  380.  
  381.             ee.Geometry.Point([114.37386402544189, 36.35009059256129]),

  382.  
  383.             {

  384.  
  385.               "type": 1,

  386.  
  387.               "system:index": "4"

  388.  
  389.             }),

  390.  
  391.         ee.Feature(

  392.  
  393.             ee.Geometry.Point([114.36987289842773, 36.352198996374725]),

  394.  
  395.             {

  396.  
  397.               "type": 1,

  398.  
  399.               "system:index": "5"

  400.  
  401.             }),

  402.  
  403.         ee.Feature(

  404.  
  405.             ee.Geometry.Point([114.37695393022705, 36.351887923993054]),

  406.  
  407.             {

  408.  
  409.               "type": 1,

  410.  
  411.               "system:index": "6"

  412.  
  413.             }),

  414.  
  415.         ee.Feature(

  416.  
  417.             ee.Geometry.Point([114.3797005122583, 36.35392715363849]),

  418.  
  419.             {

  420.  
  421.               "type": 1,

  422.  
  423.               "system:index": "7"

  424.  
  425.             }),

  426.  
  427.         ee.Feature(

  428.  
  429.             ee.Geometry.Point([114.37352070268798, 36.35627738595022]),

  430.  
  431.             {

  432.  
  433.               "type": 1,

  434.  
  435.               "system:index": "8"

  436.  
  437.             }),

  438.  
  439.         ee.Feature(

  440.  
  441.             ee.Geometry.Point([114.31785950121093, 36.34438724696162]),

  442.  
  443.             {

  444.  
  445.               "type": 1,

  446.  
  447.               "system:index": "9"

  448.  
  449.             }),

  450.  
  451.         ee.Feature(

  452.  
  453.             ee.Geometry.Point([114.31657204088378, 36.34345393245458]),

  454.  
  455.             {

  456.  
  457.               "type": 1,

  458.  
  459.               "system:index": "10"

  460.  
  461.             }),

  462.  
  463.         ee.Feature(

  464.  
  465.             ee.Geometry.Point([114.34390911516357, 36.33512274079625]),

  466.  
  467.             {

  468.  
  469.               "type": 1,

  470.  
  471.               "system:index": "11"

  472.  
  473.             }),

  474.  
  475.         ee.Feature(

  476.  
  477.             ee.Geometry.Point([114.35094723161865, 36.33723154988948]),

  478.  
  479.             {

  480.  
  481.               "type": 1,

  482.  
  483.               "system:index": "12"

  484.  
  485.             }),

  486.  
  487.         ee.Feature(

  488.  
  489.             ee.Geometry.Point([114.35309299883056, 36.337058698833104]),

  490.  
  491.             {

  492.  
  493.               "type": 1,

  494.  
  495.               "system:index": "13"

  496.  
  497.             }),

  498.  
  499.         ee.Feature(

  500.  
  501.             ee.Geometry.Point([114.35296425279785, 36.33501902740074]),

  502.  
  503.             {

  504.  
  505.               "type": 1,

  506.  
  507.               "system:index": "14"

  508.  
  509.             }),

  510.  
  511.         ee.Feature(

  512.  
  513.             ee.Geometry.Point([114.41952058729305, 36.35091929703152]),

  514.  
  515.             {

  516.  
  517.               "type": 1,

  518.  
  519.               "system:index": "15"

  520.  
  521.             }),

  522.  
  523.         ee.Feature(

  524.  
  525.             ee.Geometry.Point([114.41966006216182, 36.3516321782695]),

  526.  
  527.             {

  528.  
  529.               "type": 1,

  530.  
  531.               "system:index": "16"

  532.  
  533.             }),

  534.  
  535.         ee.Feature(

  536.  
  537.             ee.Geometry.Point([114.41982099470272, 36.35252219053154]),

  538.  
  539.             {

  540.  
  541.               "type": 1,

  542.  
  543.               "system:index": "17"

  544.  
  545.             }),

  546.  
  547.         ee.Feature(

  548.  
  549.             ee.Geometry.Point([114.42009458002224, 36.35383558809808]),

  550.  
  551.             {

  552.  
  553.               "type": 1,

  554.  
  555.               "system:index": "18"

  556.  
  557.             }),

  558.  
  559.         ee.Feature(

  560.  
  561.             ee.Geometry.Point([114.42027697023525, 36.35499343336394]),

  562.  
  563.             {

  564.  
  565.               "type": 1,

  566.  
  567.               "system:index": "19"

  568.  
  569.             }),

  570.  
  571.         ee.Feature(

  572.  
  573.             ee.Geometry.Point([114.42028233465328, 36.35609509850472]),

  574.  
  575.             {

  576.  
  577.               "type": 1,

  578.  
  579.               "system:index": "20"

  580.  
  581.             }),

  582.  
  583.         ee.Feature(

  584.  
  585.             ee.Geometry.Point([114.42228326257839, 36.35603461533285]),

  586.  
  587.             {

  588.  
  589.               "type": 1,

  590.  
  591.               "system:index": "21"

  592.  
  593.             }),

  594.  
  595.         ee.Feature(

  596.  
  597.             ee.Geometry.Point([114.42357072290554, 36.35606053669799]),

  598.  
  599.             {

  600.  
  601.               "type": 1,

  602.  
  603.               "system:index": "22"

  604.  
  605.             })]),

  606.  
  607.     water =

  608.  
  609.     /* color: #ffc82d */

  610.  
  611.     /* shown: false */

  612.  
  613.     ee.FeatureCollection(

  614.  
  615.         [ee.Feature(

  616.  
  617.             ee.Geometry.Point([114.3321717685144, 36.3306024371752]),

  618.  
  619.             {

  620.  
  621.               "type": 2,

  622.  
  623.               "system:index": "0"

  624.  
  625.             }),

  626.  
  627.         ee.Feature(

  628.  
  629.             ee.Geometry.Point([114.33210739549804, 36.333592954210076]),

  630.  
  631.             {

  632.  
  633.               "type": 2,

  634.  
  635.               "system:index": "1"

  636.  
  637.             }),

  638.  
  639.         ee.Feature(

  640.  
  641.             ee.Geometry.Point([114.28854832109619, 36.41266166922327]),

  642.  
  643.             {

  644.  
  645.               "type": 2,

  646.  
  647.               "system:index": "2"

  648.  
  649.             }),

  650.  
  651.         ee.Feature(

  652.  
  653.             ee.Geometry.Point([114.29610142168212, 36.40879346635716]),

  654.  
  655.             {

  656.  
  657.               "type": 2,

  658.  
  659.               "system:index": "3"

  660.  
  661.             }),

  662.  
  663.         ee.Feature(

  664.  
  665.             ee.Geometry.Point([114.28580173906494, 36.40547771059803]),

  666.  
  667.             {

  668.  
  669.               "type": 2,

  670.  
  671.               "system:index": "4"

  672.  
  673.             }),

  674.  
  675.         ee.Feature(

  676.  
  677.             ee.Geometry.Point([114.29541477617431, 36.40160915003326]),

  678.  
  679.             {

  680.  
  681.               "type": 2,

  682.  
  683.               "system:index": "5"

  684.  
  685.             }),

  686.  
  687.         ee.Feature(

  688.  
  689.             ee.Geometry.Point([114.3057144587915, 36.40547771059803]),

  690.  
  691.             {

  692.  
  693.               "type": 2,

  694.  
  695.               "system:index": "6"

  696.  
  697.             }),

  698.  
  699.         ee.Feature(

  700.  
  701.             ee.Geometry.Point([114.29953464922119, 36.39829308768715]),

  702.  
  703.             {

  704.  
  705.               "type": 2,

  706.  
  707.               "system:index": "7"

  708.  
  709.             }),

  710.  
  711.         ee.Feature(

  712.  
  713.             ee.Geometry.Point([114.39435610231533, 36.3617846267207]),

  714.  
  715.             {

  716.  
  717.               "type": 2,

  718.  
  719.               "system:index": "8"

  720.  
  721.             }),

  722.  
  723.         ee.Feature(

  724.  
  725.             ee.Geometry.Point([114.39429172929897, 36.361179837099506]),

  726.  
  727.             {

  728.  
  729.               "type": 2,

  730.  
  731.               "system:index": "9"

  732.  
  733.             }),

  734.  
  735.         ee.Feature(

  736.  
  737.             ee.Geometry.Point([114.38845524248256, 36.35940000037548]),

  738.  
  739.             {

  740.  
  741.               "type": 2,

  742.  
  743.               "system:index": "10"

  744.  
  745.             }),

  746.  
  747.         ee.Feature(

  748.  
  749.             ee.Geometry.Point([114.38152441438808, 36.35701530096524]),

  750.  
  751.             {

  752.  
  753.               "type": 2,

  754.  
  755.               "system:index": "11"

  756.  
  757.             }),

  758.  
  759.         ee.Feature(

  760.  
  761.             ee.Geometry.Point([114.38133129533901, 36.35653143999478]),

  762.  
  763.             {

  764.  
  765.               "type": 2,

  766.  
  767.               "system:index": "12"

  768.  
  769.             }),

  770.  
  771.         ee.Feature(

  772.  
  773.             ee.Geometry.Point([114.39965614732876, 36.36371992192421]),

  774.  
  775.             {

  776.  
  777.               "type": 2,

  778.  
  779.               "system:index": "13"

  780.  
  781.             }),

  782.  
  783.         ee.Feature(

  784.  
  785.             ee.Geometry.Point([114.40693029817714, 36.3668473954689]),

  786.  
  787.             {

  788.  
  789.               "type": 2,

  790.  
  791.               "system:index": "14"

  792.  
  793.             }),

  794.  
  795.         ee.Feature(

  796.  
  797.             ee.Geometry.Point([114.41094288286342, 36.36890351124372]),

  798.  
  799.             {

  800.  
  801.               "type": 2,

  802.  
  803.               "system:index": "15"

  804.  
  805.             }),

  806.  
  807.         ee.Feature(

  808.  
  809.             ee.Geometry.Point([114.40238127168789, 36.36840244602017]),

  810.  
  811.             {

  812.  
  813.               "type": 2,

  814.  
  815.               "system:index": "16"

  816.  
  817.             })]);

  818.  
  819.  
  820.  
  821. //监督分类

  822.  
  823. Map.centerObject(roi, 11);

  824.  
  825. Map.addLayer(roi, {color: "red"}, "roi", false);

  826.  
  827. var sampleData = crop.merge(nocrop).merge(water);

  828.  
  829.  
  830.  
  831. //Landsat8 SR数据去云

  832.  
  833. function rmCloud(image) {

  834.  
  835.   var cloudShadowBitMask = (1 << 3);

  836.  
  837.   var cloudsBitMask = (1 << 5);

  838.  
  839.   var qa = image.select("pixel_qa");

  840.  
  841.   var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)

  842.  
  843.                  .and(qa.bitwiseAnd(cloudsBitMask).eq(0));

  844.  
  845.   return image.updateMask(mask);

  846.  
  847. }

  848.  
  849.  
  850.  
  851. //缩放

  852.  
  853. function scaleImage(image) {

  854.  
  855.   var time_start = image.get("system:time_start");

  856.  
  857.   image = image.multiply(0.0001);

  858.  
  859.   image = image.set("system:time_start", time_start);

  860.  
  861.   return image;

  862.  
  863. }

  864.  
  865.  
  866.  
  867. //NDVI

  868.  
  869. function NDVI(image) {

  870.  
  871.   return image.addBands(

  872.  
  873.     image.normalizedDifference(["B5", "B4"])

  874.  
  875.          .rename("NDVI"));

  876.  
  877. }

  878.  
  879. //NDWI

  880.  
  881. function NDWI(image) {

  882.  
  883.   return image.addBands(

  884.  
  885.     image.normalizedDifference(["B3", "B5"])

  886.  
  887.          .rename("NDWI"));

  888.  
  889. }

  890.  
  891. //NDBI

  892.  
  893. function NDBI(image) {

  894.  
  895.   return image.addBands(

  896.  
  897.     image.normalizedDifference(["B6", "B5"])

  898.  
  899.          .rename("NDBI"));

  900.  
  901. }

  902.  
  903. var l8Col = ee.ImageCollection("LANDSAT/LC08/C01/T1_SR")

  904.  
  905.               .filterBounds(roi)

  906.  
  907.               .filterDate("2018-1-1", "2019-1-1")

  908.  
  909.               .map(rmCloud)

  910.  
  911.               .map(scaleImage)

  912.  
  913.               .map(NDVI)

  914.  
  915.               .map(NDWI)

  916.  
  917.               .map(NDBI);

  918.  
  919. var bands = [

  920.  
  921.   "B1", "B2", "B3", "B4", "B5", "B6", "B7",

  922.  
  923.   "NDBI", "NDWI", "NDVI"

  924.  
  925. ];

  926.  
  927. var l8Image = l8Col.median()

  928.  
  929.                    .clip(roi)

  930.  
  931.                    .select(bands);

  932.  
  933. var rgbVisParam = {

  934.  
  935.   min: 0,

  936.  
  937.   max: 0.3,

  938.  
  939.   bands: ["B4", "B3", "B2"]

  940.  
  941. };

  942.  
  943. Map.addLayer(l8Image, rgbVisParam, "l8Image");

  944.  
  945. //生成监督分类训练使用的样本数据

  946.  
  947. var training = l8Image.sampleRegions({

  948.  
  949.   collection: sampleData,

  950.  
  951.   properties: ["type"],

  952.  
  953.   scale: 30

  954.  
  955. });

  956.  
  957. //初始化分类器

  958.  
  959. // var classifier = ee.Classifier.smileCart().train({

  960.  
  961. //   features: training,

  962.  
  963. //   classProperty: "type",

  964.  
  965. //   inputProperties: bands

  966.  
  967. // });

  968.  
  969. var classifier = ee.Classifier.smileRandomForest(10).train({

  970.  
  971.   features: training,

  972.  
  973.   classProperty: "type",

  974.  
  975.   inputProperties: bands

  976.  
  977. });

  978.  
  979. print(classifier.explain());

  980.  
  981.  
  982. //影像数据调用classify利用训练数据训练得到分类结果

  983.  
  984. var classified = l8Image.classify(classifier);

  985.  
  986. //训练结果的混淆矩阵

  987.  
  988. var trainAccuracy = classifier.confusionMatrix();

  989.  
  990. Map.addLayer(classified, {min:0, max:2, palette: ["green", "orange", "blue"]}, "classify");

代码分析:

(1)这段代码做的是一个简单的监督分类,通过自己标注的样本将影像分成3大类(作物、非作物和水),样本由于是我做测试随机标注的,所以测试精度和分类准确度不高。

(2)和之前的分类代码相比较,这里只是更换了分类方法,比如随机森林我使用的是smileRandomForest方法,参数和之前的方法的参数类似,这里只是简单设置了树的个数为10。

(3)然后对分类器调用explain方法就可以查看特征重要性信息,输出结果如下面所示。

运行结果:

    比如使用ee.Classifier.smileRandomForest()方法做的分类结果,使用explain后的信息如下图:

来源请引用:地理遥感生态网科学数据注册与出版系统。