欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種采用決策樹的數(shù)據(jù)分類方法和系統(tǒng)的制作方法

文檔序號(hào):6425269閱讀:230來源:國知局
專利名稱:一種采用決策樹的數(shù)據(jù)分類方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)挖掘技術(shù)領(lǐng)域,特別是涉及一種采用決策樹的數(shù)據(jù)分類方法和系統(tǒng)。
背景技術(shù)
分類是數(shù)據(jù)挖掘中的一個(gè)重要課題。分類的目的是學(xué)會(huì)一個(gè)分類函數(shù)或分類模型 (也常常稱作分類器),該模型能把數(shù)據(jù)庫中的數(shù)據(jù)項(xiàng)映射到給定類別中的某一個(gè)。分類可用于提取描述重要數(shù)據(jù)類的模型或預(yù)測(cè)未來的數(shù)據(jù)趨勢(shì)。分類的目的是分析輸入數(shù)據(jù),通過在訓(xùn)練集中的數(shù)據(jù)表現(xiàn)出來的特性,為每一個(gè)類找到一種準(zhǔn)確的描述或者模型。這種描述常常用謂詞表示。由此生成的類描述用來對(duì)未來的測(cè)試數(shù)據(jù)進(jìn)行分類。盡管這些未來的測(cè)試數(shù)據(jù)的類標(biāo)簽是未知的,我們?nèi)钥梢杂纱祟A(yù)測(cè)這些新數(shù)據(jù)所屬的類。注意是預(yù)測(cè),而不言旨肯定。分類技術(shù)有很多,如決策樹、貝葉斯網(wǎng)絡(luò)、神經(jīng)網(wǎng)絡(luò)、遺傳算法、關(guān)聯(lián)規(guī)則等。其中, 決策樹技術(shù)是用于分類和預(yù)測(cè)的主要技術(shù),決策樹學(xué)習(xí)是以實(shí)例為基礎(chǔ)的歸納學(xué)習(xí)算法。 它著眼于從一組無次序、無規(guī)則的事例中推理除決策樹表示形式的分類規(guī)則。它采用自頂向下的遞歸方式,在決策樹的內(nèi)部節(jié)點(diǎn)進(jìn)行屬性值的比較并根據(jù)不同屬性判斷從該節(jié)點(diǎn)向下的分支,然后進(jìn)行剪枝,最后在決策樹的葉節(jié)點(diǎn)得到結(jié)論。所以從根到葉節(jié)點(diǎn)就對(duì)應(yīng)著一條合取規(guī)則,整棵樹就對(duì)應(yīng)著一組析取表達(dá)式規(guī)則。決策樹(Decision Tree)又稱為判定樹,是運(yùn)用于分類的一種樹結(jié)構(gòu)。其中的每個(gè)內(nèi)部結(jié)點(diǎn)代表對(duì)某個(gè)屬性的一次測(cè)試,每條邊代表一個(gè)測(cè)試結(jié)果,葉結(jié)點(diǎn)代表某個(gè)類或者類的分布,最上面的結(jié)點(diǎn)是根結(jié)點(diǎn)。決策樹分為分類樹和回歸樹兩種,分類樹對(duì)離散變量做決策樹,回歸樹對(duì)連續(xù)變量做決策樹。1986年Quinlan提出了著名的ID3算法[Quinlan, 1986]。在ID3算法的基礎(chǔ)上,1993年Quinlan又提出了 C4. 5算法[Quinlan,1993]。為了適應(yīng)處理大規(guī)模數(shù)據(jù)集的需要,后來又提出了若干改進(jìn)的算法,其中SLIQ(supervised learning in quest)禾口 SPRINT(scalable parallelizable induction of decision trees)是比較有代表性的兩個(gè)算法。構(gòu)造決策樹是采用自上而下的遞歸構(gòu)造方法。決策樹構(gòu)造的結(jié)果是一棵二叉或多叉樹,它的輸入是一組帶有類別標(biāo)記的訓(xùn)練數(shù)據(jù)。二叉樹的內(nèi)部結(jié)點(diǎn)(非葉結(jié)點(diǎn))一般表示為一個(gè)邏輯判斷,如形式為a = b的邏輯判斷,其中a是屬性,b是該屬性的某個(gè)屬性值; 樹的邊是邏輯判斷的分支結(jié)果。多叉樹(ID3)的內(nèi)部結(jié)點(diǎn)是屬性,邊是該屬性的所有取值, 有幾個(gè)屬性值,就有幾條邊。樹的葉結(jié)點(diǎn)都是類別標(biāo)記。使用決策樹進(jìn)行分類,首先利用訓(xùn)練集建立并精化一棵決策樹,建立決策樹模型。 這個(gè)過程實(shí)際上是一個(gè)從數(shù)據(jù)中獲取知識(shí),進(jìn)行機(jī)器學(xué)習(xí)的過程。然后利用生成完畢的決策樹對(duì)輸入數(shù)據(jù)進(jìn)行分類。對(duì)輸入的記錄,從根結(jié)點(diǎn)依次測(cè)試記錄的屬性值,直到到達(dá)某個(gè)葉結(jié)點(diǎn),從而找到該記錄所在的類。構(gòu)造決策樹最大的運(yùn)算代價(jià)在于計(jì)算選擇最佳分裂屬性,因?yàn)檫x擇分裂的時(shí)候,對(duì)每個(gè)字段都考慮;對(duì)每個(gè)字段中的值先排序,然后再一一計(jì)算,最后選出最佳的分裂屬性。常見的衡量準(zhǔn)則有信息熵和Ginilndex等方法。決策樹算法內(nèi)部的并行性,實(shí)際上跟數(shù)據(jù)本身的存儲(chǔ)有很大的關(guān)系,如果數(shù)據(jù)縱向劃分存儲(chǔ),即每個(gè)節(jié)點(diǎn)只存儲(chǔ)數(shù)據(jù)的部分屬性,那么這種存儲(chǔ)方式具有較好的并行性;而如果數(shù)據(jù)橫向存儲(chǔ),分布在各個(gè)數(shù)據(jù)節(jié)點(diǎn)的那種情況,那么比較難用決策樹算法進(jìn)行并行化處理,特別是第一個(gè)根節(jié)點(diǎn)的分裂就只能串行執(zhí)行,在根節(jié)點(diǎn)分裂完成以后,根節(jié)點(diǎn)下的兩個(gè)子節(jié)點(diǎn)可以用相應(yīng)的兩臺(tái)機(jī)器進(jìn)行并行處理,以此類推。從本質(zhì)上來講,如果數(shù)據(jù)是橫向存儲(chǔ)且想得到全局分類決策樹,那么很難進(jìn)行并行處理,且節(jié)點(diǎn)之間不能并行,只能串行。為了處理大規(guī)模數(shù)據(jù)且數(shù)據(jù)都是橫向劃分的情況,現(xiàn)有的很多構(gòu)造決策樹的工作 [宋,2007]都是分布式的。圖1是現(xiàn)有技術(shù)中分布式構(gòu)造決策樹的工作示意圖,如圖1所示,把數(shù)據(jù)劃分成很多小塊,然后每個(gè)處理器對(duì)每塊數(shù)據(jù)進(jìn)行處理,構(gòu)造一個(gè)局部的分類決策樹,然后用這些子分類器對(duì)新的樣本進(jìn)行預(yù)測(cè),最后對(duì)這些預(yù)測(cè)結(jié)果進(jìn)行加權(quán)集成。還有另外一種方式是每計(jì)算一個(gè)節(jié)點(diǎn)的分裂屬性時(shí)都要做一次同步,具體方法為每個(gè)處理器對(duì)所分配的數(shù)據(jù)都計(jì)算一個(gè)局部最佳分裂屬性,然后再同步得到全局最佳分裂屬性,這樣不斷遞歸,最后得到最終的決策分類樹。[張,2010]提出了一種基于MapReduce的SPRINT 并行分類算法,不過其最終得到的模型并不是全局分類模型,而是局部最優(yōu)模型,且仍然采用遞歸的方式(迭代次數(shù)不可控),即只實(shí)現(xiàn)了節(jié)點(diǎn)內(nèi)部并行,沒有實(shí)現(xiàn)同一層節(jié)點(diǎn)之間的并行。因此,現(xiàn)有的分類決策樹很多實(shí)現(xiàn)是串行且基于內(nèi)存,因此不能處理海量數(shù)據(jù);而對(duì)于現(xiàn)有的分布式處理方式,雖然數(shù)據(jù)處理規(guī)模有了很大的提高,但是編程實(shí)現(xiàn)比較復(fù)雜和困難,另外構(gòu)造的分類決策樹不是全局的,只是很多局部子決策樹的加權(quán)集成。更重要的是,遞歸實(shí)現(xiàn)效率也比較低,迭代過程不可控。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種采用決策樹的數(shù)據(jù)分類方法和系統(tǒng)。其實(shí)現(xiàn)了基于 MapReduce的并行決策樹ID3算法,不僅可以處理大規(guī)模數(shù)據(jù)集,而且并行效率高,即實(shí)現(xiàn)構(gòu)建決策樹中節(jié)點(diǎn)內(nèi)部以及同一層節(jié)點(diǎn)之間的并行計(jì)算。為實(shí)現(xiàn)本發(fā)明的目的而提供的一種采用決策樹的數(shù)據(jù)分類方法,所述方法,包括下列步驟步驟100,基于MapReduce機(jī)制,并行計(jì)算訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最佳的分裂決策屬性作為節(jié)點(diǎn)構(gòu)造決策樹;步驟200,根據(jù)所述決策樹,對(duì)輸入的數(shù)據(jù)記錄進(jìn)行分類。所述步驟100,包括下列步驟步驟110,啟動(dòng)一個(gè)進(jìn)程,計(jì)算訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最大值作為根節(jié)點(diǎn)的分裂屬性,并計(jì)算決策規(guī)則以及傳給第一層的前綴信息步驟120,判斷是否產(chǎn)生了新的決策規(guī)則,若是,則將產(chǎn)生的新的決策規(guī)則保存到規(guī)則集中,同時(shí)刪除當(dāng)前訓(xùn)練數(shù)據(jù)中包含該規(guī)則的樣本,產(chǎn)生新的數(shù)據(jù)集,執(zhí)行步驟130 ; 否則,執(zhí)行步驟130;步驟130,判斷是否產(chǎn)生新的前綴信息,若是,則執(zhí)行步驟140 ;否則執(zhí)行步驟
5160 ;步驟140,決策樹層數(shù)加一,判斷當(dāng)前決策樹的層數(shù)是否小于訓(xùn)練數(shù)據(jù)中包含的所有屬性的總數(shù),若是,則執(zhí)行步驟150 ;否則執(zhí)行步驟160 ;步驟150,啟動(dòng)一個(gè)新的進(jìn)程,計(jì)算在當(dāng)前前綴信息下,當(dāng)前訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最大值作為當(dāng)前節(jié)點(diǎn)的分裂屬性,并計(jì)算決策規(guī)則以及傳給下一層的前綴信息,返回步驟120;步驟160,結(jié)束訓(xùn)練,根據(jù)計(jì)算得到的決策規(guī)則構(gòu)建決策樹。 在進(jìn)行屬性的信息增益計(jì)算時(shí)采用MapReduce函數(shù)采集數(shù)據(jù),在Map函數(shù)中,根據(jù)頭文件信息對(duì)讀入的每一行樣本進(jìn)行解析,產(chǎn)生中間的<key,value)對(duì),key為前綴信息+ 類別信息+條件屬性的名字+條件屬性的值或者前綴信息+類別信息,若沒有前綴信息,則為空,value為1,Map函數(shù)的輸入key和value分別為樣本的在dfs上偏移位置和樣本本身,Reduce函數(shù)對(duì)中間<key,value)對(duì)進(jìn)行融合。所述步驟200中,構(gòu)建完成的決策樹保存在HDFS文件系統(tǒng)中,當(dāng)進(jìn)行測(cè)試時(shí),每個(gè)節(jié)點(diǎn)從HDFS中提取決策樹,對(duì)輸入的數(shù)據(jù)記錄進(jìn)行分類。為實(shí)現(xiàn)本發(fā)明的目的還提供一種采用決策樹的數(shù)據(jù)分類系統(tǒng),所述系統(tǒng),包括訓(xùn)練模塊,用于基于MapReduce機(jī)制,并行計(jì)算訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最佳的分裂決策屬性作為節(jié)點(diǎn)構(gòu)造決策樹;分類模塊,用于根據(jù)所述決策樹,對(duì)輸入的數(shù)據(jù)記錄進(jìn)行分類。所述訓(xùn)練模塊,包括信息增益計(jì)算模塊,用于計(jì)算在當(dāng)前前綴信息下,當(dāng)前訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最大值作為當(dāng)前節(jié)點(diǎn)的分裂屬性,并計(jì)算決策規(guī)則以及傳給下一層的前綴信息決策規(guī)則判斷模塊,用于判斷是否產(chǎn)生了新的決策規(guī)則,若是,則將產(chǎn)生的新的決策規(guī)則保存到規(guī)則集中,同時(shí)刪除當(dāng)前訓(xùn)練數(shù)據(jù)中包含該規(guī)則的樣本,產(chǎn)生新的數(shù)據(jù)集,觸發(fā)前綴信息判斷模塊;否則,直接觸發(fā)前綴信息判斷模塊;前綴信息判斷模塊,用于判斷是否產(chǎn)生新的前綴信息,若是,則觸發(fā)閾值判斷模塊;否則結(jié)束訓(xùn)練,根據(jù)計(jì)算得到的決策規(guī)則構(gòu)建決策樹;閾值判斷模塊,決策樹層數(shù)加一,判斷當(dāng)前決策樹的層數(shù)是否小于訓(xùn)練數(shù)據(jù)中包含的所有屬性的總數(shù),若是,則觸發(fā)信息增益計(jì)算模塊;否則結(jié)束訓(xùn)練,根據(jù)計(jì)算得到的決策規(guī)則構(gòu)建決策樹。所述訓(xùn)練模塊中,在進(jìn)行屬性的信息增益計(jì)算時(shí)采用MapReduce函數(shù)采集數(shù)據(jù), 在Map函數(shù)中,根據(jù)頭文件信息對(duì)讀入的每一行樣本進(jìn)行解析,產(chǎn)生中間的<key,value) 對(duì),key為前綴信息+類別信息+條件屬性的名字+條件屬性的值或者前綴信息+類別信息,若沒有前綴信息,則為空,value為l,Map函數(shù)的輸入key和value分別為樣本的在dfs 上偏移位置和樣本本身,Reduce函數(shù)對(duì)中間<key,value)對(duì)進(jìn)行融合。所述分類模塊,控制每個(gè)節(jié)點(diǎn)將保存在HDFS文件系統(tǒng)中的構(gòu)建完成的決策樹提取出來,對(duì)輸入的數(shù)據(jù)記錄進(jìn)行分類。本發(fā)明的有益效果是本發(fā)明實(shí)現(xiàn)了基于MapReduce的并行決策樹算法,解決了傳統(tǒng)串行決策樹分類算法不能處理的大規(guī)模數(shù)據(jù)的問題。實(shí)現(xiàn)了決策樹算法ID3的完全并行,即不僅僅是同一節(jié)點(diǎn)最佳屬性的選擇是并行的,而且同一層的所有節(jié)點(diǎn)計(jì)算最佳屬性也是并行的;更重要的是,實(shí)現(xiàn)了用循環(huán)的方式替換了遞歸,循環(huán)的次數(shù)可控,算法最大迭代次數(shù)不會(huì)超過數(shù)據(jù)的條件屬性的個(gè)數(shù)。


圖1是現(xiàn)有技術(shù)中分布式構(gòu)造決策樹的工作示意圖;圖2是本發(fā)明的一種采用決策樹的數(shù)據(jù)分類方法的步驟流程圖;圖3是本發(fā)明中根據(jù)訓(xùn)練數(shù)據(jù)訓(xùn)練構(gòu)造決策樹的步驟流程圖;圖4是本發(fā)明的一種采用決策樹的數(shù)據(jù)分類系統(tǒng)的結(jié)構(gòu)示意圖;圖5是根據(jù)上述產(chǎn)生規(guī)則構(gòu)造的決策樹。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明的一種采用決策樹的數(shù)據(jù)分類方法和系統(tǒng)進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明的一種采用決策樹的數(shù)據(jù)分類方法和系統(tǒng),通過對(duì)訓(xùn)練數(shù)據(jù),基于 MapReduce機(jī)制構(gòu)造決策樹,樹的中間節(jié)點(diǎn)是分裂決策屬性,樹的葉結(jié)點(diǎn)都有類別標(biāo)記,因此從根節(jié)點(diǎn)到葉節(jié)點(diǎn)就構(gòu)成了一條判別規(guī)則。當(dāng)構(gòu)造完分類決策樹后,就可以對(duì)測(cè)試樣本進(jìn)行分類。本發(fā)明中采用的并行分類決策樹算法主要針對(duì)分類決策樹,而且屬性都是類別屬性。在大規(guī)模數(shù)據(jù)處理中,連續(xù)型屬性的處理代價(jià)相當(dāng)高,所以可以把連續(xù)型屬性通過預(yù)處理轉(zhuǎn)化為類別型屬性。下面結(jié)合上述目標(biāo)詳細(xì)介紹本發(fā)明的一種采用決策樹的數(shù)據(jù)分類方法,圖2是本發(fā)明的一種采用決策樹的數(shù)據(jù)分類方法的步驟流程圖,如圖2所示,所述方法,包括下列步驟步驟100,計(jì)算訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最佳的分裂決策屬性構(gòu)造決策樹;圖3是本發(fā)明中根據(jù)訓(xùn)練數(shù)據(jù)訓(xùn)練構(gòu)造決策樹的步驟流程圖,如圖3所示,所述步驟100,包括下列步驟步驟110,啟動(dòng)一個(gè)job 計(jì)算訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最大值作為根節(jié)點(diǎn)的分裂屬性并計(jì)算決策規(guī)則以及傳給第一層的前綴信息步驟120,判斷是否產(chǎn)生了新的決策規(guī)則,若是,則將產(chǎn)生的新的決策規(guī)則保存到規(guī)則集中,同時(shí)刪除當(dāng)前訓(xùn)練數(shù)據(jù)中包含該規(guī)則的樣本,產(chǎn)生新的數(shù)據(jù)集,執(zhí)行步驟130 ; 否則,執(zhí)行步驟130;每一層計(jì)算完成后,我們都會(huì)檢查是否產(chǎn)生新的規(guī)則,如果產(chǎn)生新的規(guī)則就保存到規(guī)則集中,產(chǎn)生一個(gè)新的數(shù)據(jù)集,該數(shù)據(jù)集由原始數(shù)據(jù)集中去掉能被新規(guī)則包含的樣本得到。這樣下一層操作的數(shù)據(jù)對(duì)象是產(chǎn)生的新數(shù)據(jù)集,數(shù)據(jù)集會(huì)變得越來越小,最后直到?jīng)]有新的數(shù)據(jù)集產(chǎn)生為止,算法結(jié)束。
步驟130,判斷是否產(chǎn)生新的前綴信息,若是,則執(zhí)行步驟140 ;否則執(zhí)行步驟 160 ;由于層與層之間的運(yùn)算是串行的,上一層都會(huì)傳遞前綴信息給下一層節(jié)點(diǎn),這些前綴信息包括從根節(jié)點(diǎn)到當(dāng)前分支的分裂屬性信息等。每一層要選擇的分裂屬性個(gè)數(shù)是由前綴信息決定的,每個(gè)前綴信息代表一個(gè)節(jié)點(diǎn)。步驟140,決策樹層數(shù)加一,判斷當(dāng)前決策樹的層數(shù)是否小于訓(xùn)練數(shù)據(jù)中包含的所有屬性的總數(shù),若是,則執(zhí)行步驟150 ;否則執(zhí)行步驟160 ;本發(fā)明實(shí)現(xiàn)的并行決策樹算法以循環(huán)代替了遞歸,每一層只需要一個(gè)job就可以完成,而不關(guān)心一個(gè)層里面有多少個(gè)節(jié)點(diǎn)。使得運(yùn)行完程序所需要的最大job個(gè)數(shù)可預(yù)測(cè) (最大數(shù)目為樣本集中條件屬性的數(shù)目numAttri),從而有利于控制程序的執(zhí)行狀態(tài)。而在遞歸中,無法預(yù)測(cè)還有多少節(jié)點(diǎn)要運(yùn)算,這樣就無法預(yù)測(cè)程序何時(shí)結(jié)束。而本發(fā)明中程序需要運(yùn)行的最大層數(shù)由條件屬性的個(gè)數(shù)決定,因此是可控制的。也就是可以設(shè)置程序中循環(huán)最大的迭代次數(shù)為numAttri,而不是遞歸方式,無法估計(jì)程序何時(shí)執(zhí)行結(jié)束。步驟150,啟動(dòng)一個(gè)新的job 計(jì)算在當(dāng)前前綴信息下,當(dāng)前訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最大值作為當(dāng)前節(jié)點(diǎn)的分裂屬性,并計(jì)算決策規(guī)則以及傳給下一層的前綴信息返回步驟120 ;步驟160,結(jié)束訓(xùn)練,根據(jù)計(jì)算得到的決策規(guī)則構(gòu)建決策樹。作為一種可實(shí)施方式,構(gòu)建完成的決策樹模型保存在HDFS文件系統(tǒng)中。當(dāng)進(jìn)行測(cè)試時(shí),每個(gè)節(jié)點(diǎn)從HDFS (HDFS本身是一個(gè)分布式文件系統(tǒng))中提取決策樹模型,對(duì)測(cè)試樣本進(jìn)行分類。較佳地,在訓(xùn)練過程中,基于MapReduce機(jī)制,本發(fā)明實(shí)現(xiàn)了同一層內(nèi)節(jié)點(diǎn)之間、 節(jié)點(diǎn)內(nèi)的并行計(jì)算,提高算法的執(zhí)行效率。在進(jìn)行屬性的信息增益計(jì)算時(shí)采用MapReduce 函數(shù)采集數(shù)據(jù),在Map函數(shù)中,根據(jù)頭文件信息對(duì)讀入的每一行樣本進(jìn)行解析,產(chǎn)生中間的 <key, value)對(duì),key為前綴信息+類別信息+條件屬性的名字+條件屬性的值或者前綴信息+類別信息(如果沒有前綴信息,則為空),value為1。Map函數(shù)的輸入key和value 分別為樣本的在dfs上偏移位置和樣本本身。Reduce函數(shù)對(duì)中間<key,value)對(duì)進(jìn)行融合,即對(duì)具有相同key的value進(jìn)行統(tǒng)計(jì)。輸入的key和value是Map函數(shù)的輸出,輸出的 key與Map函數(shù)相同,value為統(tǒng)計(jì)值。MapReduce是Google實(shí)驗(yàn)室提出的一種簡(jiǎn)化的分布式程序設(shè)計(jì)模型,用于處理和生成大量數(shù)據(jù)集。通過該模型,程序自動(dòng)分布到一個(gè)由普通機(jī)器組成的超大機(jī)群上并發(fā)執(zhí)行。[Dean J,Ghemawat S. :MapReduce !Simplified data processing on large clusters [J], Communications of The ACM,vol :51. pp :107-113,2008.]Map和Reduce是該模型中的兩大基本操作。其中,Map是把一組數(shù)據(jù)一對(duì)一的映射為另外的一組數(shù)據(jù),Reduce是對(duì)數(shù)據(jù)進(jìn)行規(guī)約,映射規(guī)則與規(guī)約規(guī)則可由用戶通過函數(shù)來分別指定?,F(xiàn)實(shí)生活中很多任務(wù)的實(shí)現(xiàn)都是可以基于這樣的映射規(guī)約模式。實(shí)現(xiàn)MapReduce操作的整個(gè)流程如下(1)當(dāng)用戶程序調(diào)用MapReduce函數(shù)時(shí),輸入文件將被分隔成M塊(每塊大小通常為16M至64M,可由用戶通過參數(shù)控制),同時(shí)用戶程序?qū)⒈粡?fù)制許多份存儲(chǔ)于機(jī)群中。(2)機(jī)群中的某個(gè)節(jié)點(diǎn)將被視為主節(jié)點(diǎn)。主節(jié)點(diǎn)選擇空閑節(jié)點(diǎn),并指派給每個(gè)節(jié)點(diǎn)一個(gè)Map任務(wù)或一個(gè)Reduce任務(wù)。最終將有M個(gè)Map任務(wù)和R個(gè)Reduce任務(wù)被指派完成。(3)被指派到Map任務(wù)的節(jié)點(diǎn)將讀入所對(duì)應(yīng)的輸入文件塊,輸入的<key,value)對(duì)將通過用戶自定義的Map函數(shù)得到一組同樣用<key,value〉對(duì)表示的中間結(jié)果集合。(4)中間結(jié)果對(duì)將會(huì)周期性的寫入本地硬盤并通過分隔函數(shù)分隔成R個(gè)塊。同時(shí), 存儲(chǔ)中間結(jié)果的本地硬盤位置將會(huì)返回給主節(jié)點(diǎn),以便其下一步指派Reduce任務(wù)。(5)被指派到Reduce任務(wù)的節(jié)點(diǎn)將遠(yuǎn)程讀入中間結(jié)果。待中間結(jié)果數(shù)據(jù)全部被讀入后,將會(huì)按照key來排序,使得具有同樣key的中間結(jié)果聚集在一起。(6)含有相同key的<key,value〉對(duì)通過用戶自定義的Reduce函數(shù)進(jìn)行歸約,得到最終結(jié)果并寫出輸出文件。MapReduce通過把對(duì)數(shù)據(jù)集的大規(guī)模操作分發(fā)給網(wǎng)絡(luò)上的每個(gè)節(jié)點(diǎn)來實(shí)現(xiàn)可靠性,每個(gè)節(jié)點(diǎn)會(huì)周期性的把完成的工作和狀態(tài)信息返回給主節(jié)點(diǎn)。如果一個(gè)節(jié)點(diǎn)保持沉默超過一個(gè)預(yù)設(shè)的時(shí)間間隔,主節(jié)點(diǎn)就認(rèn)為該節(jié)點(diǎn)失效了,并把分配給這個(gè)節(jié)點(diǎn)的數(shù)據(jù)發(fā)到別的節(jié)點(diǎn),并且因此可以被其它節(jié)點(diǎn)所調(diào)度執(zhí)行。由于MapReduce運(yùn)行系統(tǒng)已考慮到了輸入數(shù)據(jù)劃分、節(jié)點(diǎn)失效處理、節(jié)點(diǎn)之間所需通信等各個(gè)細(xì)節(jié),使得程序員可以不需要有什么并發(fā)處理或者分布式系統(tǒng)的經(jīng)驗(yàn),就可以處理超大規(guī)模的分布式系統(tǒng)資源。步驟200,根據(jù)所述決策樹,對(duì)輸入的數(shù)據(jù)記錄進(jìn)行分類。相應(yīng)于本發(fā)明的一種采用決策樹的數(shù)據(jù)分類方法,還提供一種采用決策樹的數(shù)據(jù)分類系統(tǒng),圖4是本發(fā)明的一種采用決策樹的數(shù)據(jù)分類系統(tǒng)的結(jié)構(gòu)示意圖,如圖4所示,所述系統(tǒng),包括訓(xùn)練模塊1,用于基于MapReduce機(jī)制,并行計(jì)算訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最佳的分裂決策屬性作為節(jié)點(diǎn)構(gòu)造決策樹; 分類模塊2,用于根據(jù)所述決策樹,對(duì)輸入的數(shù)據(jù)記錄進(jìn)行分類。其中,所述訓(xùn)練模塊1,包括信息增益計(jì)算模塊11,用于計(jì)算在當(dāng)前前綴信息下,當(dāng)前訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最大值作為當(dāng)前節(jié)點(diǎn)的分裂屬性,并計(jì)算決策規(guī)則以及傳給下一層的前綴信息決策規(guī)則判斷模塊12,用于判斷是否產(chǎn)生了新的決策規(guī)則,若是,則將產(chǎn)生的新的決策規(guī)則保存到規(guī)則集中,同時(shí)刪除當(dāng)前訓(xùn)練數(shù)據(jù)中包含該規(guī)則的樣本,產(chǎn)生新的數(shù)據(jù)集, 觸發(fā)前綴信息判斷模塊13 ;否則,觸發(fā)前綴信息判斷模塊13 ;前綴信息判斷模塊13,用于判斷是否產(chǎn)生新的前綴信息,若是,則觸發(fā)閾值判斷模塊14 ;否則結(jié)束訓(xùn)練,根據(jù)計(jì)算得到的決策規(guī)則構(gòu)建決策樹;閾值判斷模塊14,決策樹層數(shù)加一,判斷當(dāng)前決策樹的層數(shù)是否小于訓(xùn)練數(shù)據(jù)中包含的所有屬性的總數(shù),若是,則觸發(fā)信息增益計(jì)算模塊11 ;否則結(jié)束訓(xùn)練,根據(jù)計(jì)算得到的決策規(guī)則構(gòu)建決策樹。對(duì)于輸入的一段數(shù)據(jù)記錄,啟動(dòng)第一個(gè)job,信息增益計(jì)算模塊11計(jì)算在當(dāng)前前綴信息下,當(dāng)前訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最大值作為當(dāng)前節(jié)點(diǎn)的分裂屬性,并計(jì)算決策規(guī)則以及傳給下一層的前綴信息;由于是第一個(gè)job,因此還沒有產(chǎn)生前毅信
息,當(dāng)前訓(xùn)練數(shù)據(jù)即是輸入的數(shù)據(jù)記錄,當(dāng)前節(jié)點(diǎn)即是根節(jié)點(diǎn),傳給下一層的前綴信息即是傳給第一層的前綴信息。決策規(guī)則判斷模塊12判斷是否產(chǎn)生了新的決策規(guī)則,若是, 則將產(chǎn)生的新的決策規(guī)則保存到規(guī)則集中,同時(shí)刪除當(dāng)前訓(xùn)練數(shù)據(jù)中包含該規(guī)則的樣本, 產(chǎn)生新的數(shù)據(jù)集,觸發(fā)前綴信息判斷模塊13 ;如果沒有產(chǎn)生新的決策規(guī)則,則直接觸發(fā)前綴信息判斷模塊13 ;所述前綴信息判斷模塊13判斷是否產(chǎn)生新的前綴信息,若是,則觸發(fā)閾值判斷模塊14 ;決策樹層數(shù)加一,閾值判斷模塊14判斷當(dāng)前決策樹的層數(shù)是否小于訓(xùn)練數(shù)據(jù)中包含的所有屬性的總數(shù),若是,則啟動(dòng)一個(gè)新的job,再次觸發(fā)信息增益計(jì)算模塊 11,計(jì)算在當(dāng)前前綴信息下,當(dāng)前訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益選出最大值作為當(dāng)前節(jié)點(diǎn)的分裂屬性,并計(jì)算決策規(guī)則以及傳給下一層的前綴信息;如此反復(fù)執(zhí)行直到不再產(chǎn)生新的前綴信息或者決策樹的層數(shù)大于訓(xùn)練數(shù)據(jù)中包含的所有屬性的總數(shù),則結(jié)束訓(xùn)練,根據(jù)計(jì)算得到的決策規(guī)則構(gòu)建決策樹。為了更清楚地說明本發(fā)明的技術(shù)方案,下面以Weka3. 5中的數(shù)據(jù)weather, nominal為例來講解構(gòu)建決策樹的過程。算法主要是針對(duì)結(jié)構(gòu)化的arff格式的數(shù)據(jù),arff 格式的數(shù)據(jù)說明如下數(shù)據(jù)的名稱,以O(shè)relation開頭;數(shù)據(jù)中包含的樣本整數(shù),以O(shè)totalnum開頭,如果樣本數(shù)未知?jiǎng)t設(shè)為_1 ;數(shù)據(jù)中的屬性,包括nominal和numeric,都是以(Attribute開頭;文件中的數(shù)據(jù)以O(shè)data開頭weather, nominal 數(shù)據(jù)如下Orelation weather, symboliciattribute outlook{sunny, overcast, rainy}iattribute temperature{hot, mild,cool}iattribute humidity{high, normal}iattribute windy{TRUE, FALSE}iattribute play{yes, no}Odatasunny, hot, high, FALSE, nosunny, hot, high, TRUE, noovercast, hot, high, FALSE, yesrainy, mild, high, FALSE, yesrainy, cool, normal, FALSE, yesrainy, cool, normal, TRUE, noovercast, cool, normal, TRUE, yessunny, mild, high, FALSE, nosunny, cool, normal, FALSE, yesrainy, mild, normal, FALSE, yessunny, mild, normal, TRUE, yesovercast, mild, high, TRUE, yesovercast, hot, normal, FALSE, yes0103]rainy, mild, high, TRUE, no
0104]總共有5個(gè)屬性,包括4個(gè)條件屬性和1個(gè)決策屬性。每個(gè)屬性都是類別型的,包括有若干個(gè)屬性值。
0105]1.第一個(gè)job的輸出如下
0106]no5
0107]no, humidity, high 4
0108]no, humidity, normal 1
0109]no, outlook, rainy 2
0110]no,outlook,sunny 3
0111]no, temperature, cool 1
0112]no, temperature, hot 2
0113]no,temperature, mild 2
0114]no, windy, FALSE 2
0115]no, windy, TRUE 3
0116]yes 9
0117]yes, humidity, high 3
0118]yes,humidity, normal 6
0119]yes,outlook,overcast 4
0120]yes, outlook, rainy 3
0121]yes,outlook,sunny 2
0122]yes,temperature, cool 3
0123]yes, temperature, hot 2
0124]yes, temperature, mild 4
0125]yes, windy, FALSE 6
0126]yes, windy, TRUE 3
0127]通過計(jì)算各個(gè)屬性的信息增益后,選出根節(jié)點(diǎn)的分裂屬性為outlook,然后產(chǎn)生一條新的規(guī)則outlook = overcast yes (confidence = 1.0),以及1條的前綴信息
0128]outlook,sunny 2,3
0129]outlook, rainy 3,2
0130]其中outlook是屬性名稱,sunny是屬性值,后面的兩個(gè)數(shù)字2和3分別指outlook =sunny的分支中屬于yes和no的樣本數(shù)。
0131]2.第二個(gè)job的工作
0132]由于產(chǎn)生了新的規(guī)則,因此要?jiǎng)h除原始訓(xùn)練集中包含該規(guī)則的樣本,產(chǎn)生新的數(shù)據(jù)集如下
0133]rainy, cool, normal,F(xiàn)ALSE,yes
0134]rainy, cool,normal,TRUE,no
0135]rainy, mild,high,F(xiàn)ALSE,yes
0136]rainy, mild,high,TRUE, no
0137]rainy, mild,normal,F(xiàn)ALSE,yes
110138]sunny, cool, normal, FALSE, yes
0139]sunny, hot, high, FALSE, no
0140]sunny, hot, high, TRUE, no
0141]sunny, mild, high, FALSE, no
0142]sunny, mild, normal, TRUE, yes
0143]3.第三個(gè)job的工作
0144]第三個(gè)job的任務(wù)跟第一個(gè)job類似,但是由于已經(jīng)產(chǎn)生了前綴信息,所以在最后的reduce輸出中都有前綴,結(jié)果如下
0145]outlook, rainy, no, temperature,cool 1
0146]outlook, rainy, no,temperature,mild 1
0147]outlook, rainy, no,humidity, high 1
0148]outlook, rainy, no,humidity, normal 1
0149]outlook, rainy, no,windy, TRUE 2
0150]outlook, rainy, yes,temperature,cool 1
0151]outlook, rainy, yes,temperature,mild 2
0152]outlook, rainy, yes, humidity, high 1
0153]outlook, rainy, yes,humi dity,normal 2
0154]outlook, rainy, yes, windy, FALSE 3
0155]outlook, sunny, no,temperature,hot 2
0156]outlook, sunny, no,temperature,mild 1
0157]outlook, sunny, no,humidity, high 3
0158]outlook, sunny, no,windy, FALSE 2
0159]outlook, sunny, no,windy, TRUE 1
0160]outlook, sunny, yes, temperature,cool 1
0161]outlook, sunny, yes, temperature,mild 1
0162]outlook, sunny, yes, humidity, normal 2
0163]outlook, sunny, yes, windy, FALSE 1
0164]outlook, sunny, yes, windy, TRUE 1
0165]我們可以看到輸出的每一條記錄都會(huì)有一個(gè)前綴實(shí)際上每個(gè)前綴就對(duì)應(yīng)著要找出一個(gè)分裂屬性,因此這些輸出中我們可以計(jì)算得到兩個(gè)分裂屬性。通過計(jì)算分類屬性,我得到了以下4條規(guī)則
0166]outlook = sunny, humidity = high no (confidence = 1. 0)
0167]outlook = sunny, humidity = normal yes (confidence = 1. 0)
0168]outlook = rainy, windy = TRUEno (confidence = L0)
0169]outlook = rainy, windy = FALSEyes (confidence = L0)
0170]由于沒有產(chǎn)生新的前綴信息,所以訓(xùn)練結(jié)束,最后得到分類決策樹模型。
0171]圖5是根據(jù)上述產(chǎn)生規(guī)則構(gòu)造的決策樹,如圖5所示,最后產(chǎn)生的決策規(guī)則如下, 其中參數(shù) confidence 為 0. 75,minNumObj 為 2。輸出的規(guī)則
outlook = sunnyhumidity = high :no(3. 0)humidity = normal :yes (2. 0)outlook = overcast :yes (4. 0)outlook = rainyI windy = TRUE :no (2. 0)I windy = FALSE :yes (3. 0)本發(fā)明的有益效果在于1.設(shè)計(jì)實(shí)現(xiàn)了并行決策樹ID3算法,解決了分類決策樹處理大規(guī)模數(shù)據(jù)的問題;2.實(shí)現(xiàn)了算法的完全并行;即不僅僅是同一節(jié)點(diǎn)最佳屬性的選擇是并行的,而且同一層的所有節(jié)點(diǎn)計(jì)算最佳屬性也是并行的;更重要的是,實(shí)現(xiàn)了用循環(huán)的方式替換了遞歸,循環(huán)的次數(shù)可控,最大次數(shù)不會(huì)超過數(shù)據(jù)的條件屬性的個(gè)數(shù);3.實(shí)現(xiàn)的算法構(gòu)造的分類決策樹模型是全局的;解決了分布式算法下求解全局最優(yōu)解比較難的問題;4.基于MapReduce的并行編程機(jī)制;使得代碼易于實(shí)現(xiàn)和理解,且能夠很容易擴(kuò)展的大規(guī)模集群中運(yùn)行,提高算法的執(zhí)行效率,減少執(zhí)行時(shí)間。通過結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的描述,本發(fā)明的其它方面及特征對(duì)本領(lǐng)域的技術(shù)人員而言是顯而易見的。以上對(duì)本發(fā)明的具體實(shí)施例進(jìn)行了描述和說明,這些實(shí)施例應(yīng)被認(rèn)為其只是示例性的,并不用于對(duì)本發(fā)明進(jìn)行限制,本發(fā)明應(yīng)根據(jù)所附的權(quán)利要求進(jìn)行解釋。
權(quán)利要求
1.一種采用決策樹的數(shù)據(jù)分類方法,其特征在于,所述方法,包括下列步驟步驟100,基于MapReduce機(jī)制,并行計(jì)算訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最佳的分裂決策屬性作為節(jié)點(diǎn)構(gòu)造決策樹;步驟200,根據(jù)所述決策樹,對(duì)輸入的數(shù)據(jù)記錄進(jìn)行分類。
2.根據(jù)權(quán)利要求1所述的采用決策樹的數(shù)據(jù)分類方法,其特征在于,所述步驟100,包括下列步驟步驟110,啟動(dòng)一個(gè)進(jìn)程,計(jì)算訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最大值作為根節(jié)點(diǎn)的分裂屬性,并計(jì)算決策規(guī)則以及傳給第一層的前綴信息步驟120,判斷是否產(chǎn)生了新的決策規(guī)則,若是,則將產(chǎn)生的新的決策規(guī)則保存到規(guī)則集中,同時(shí)刪除當(dāng)前訓(xùn)練數(shù)據(jù)中包含該規(guī)則的樣本,產(chǎn)生新的數(shù)據(jù)集,執(zhí)行步驟130 ;否則, 執(zhí)行步驟130 ;步驟130,判斷是否產(chǎn)生新的前綴信息,若是,則執(zhí)行步驟140 ;否則執(zhí)行步驟160 ;步驟140,決策樹層數(shù)加一,判斷當(dāng)前決策樹的層數(shù)是否小于訓(xùn)練數(shù)據(jù)中包含的所有屬性的總數(shù),若是,則執(zhí)行步驟150 ;否則執(zhí)行步驟160 ;步驟150,啟動(dòng)一個(gè)新的進(jìn)程,計(jì)算在當(dāng)前前綴信息下,當(dāng)前訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最大值作為當(dāng)前節(jié)點(diǎn)的分裂屬性,并計(jì)算決策規(guī)則以及傳給下一層的前綴信息,返回步驟120;步驟160,結(jié)束訓(xùn)練,根據(jù)計(jì)算得到的決策規(guī)則構(gòu)建決策樹。
3.根據(jù)權(quán)利要求1所述的采用決策樹的數(shù)據(jù)分類方法,其特征在于,在進(jìn)行屬性的信息增益計(jì)算時(shí)采用MapReduce函數(shù)采集數(shù)據(jù),在Map函數(shù)中,根據(jù)頭文件信息對(duì)讀入的每一行樣本進(jìn)行解析,產(chǎn)生中間的<key,value〉對(duì),key為前綴信息+類別信息+條件屬性的名字+條件屬性的值或者前綴信息+類別信息,若沒有前綴信息,則為空,value為1,Map函數(shù)的輸入key和value分別為樣本的在分布式文件系統(tǒng)上偏移位置和樣本本身,Reduce函數(shù)對(duì)中間<key,value)對(duì)進(jìn)行融合。
4.根據(jù)權(quán)利要求1所述的采用決策樹的數(shù)據(jù)分類方法,其特征在于,所述步驟200中, 構(gòu)建完成的決策樹保存在HDFS文件系統(tǒng)中,當(dāng)進(jìn)行測(cè)試時(shí),每個(gè)節(jié)點(diǎn)從HDFS中提取決策樹,對(duì)輸入的數(shù)據(jù)記錄進(jìn)行分類。
5.一種采用決策樹的數(shù)據(jù)分類系統(tǒng),其特征在于,所述系統(tǒng),包括訓(xùn)練模塊,用于基于MapReduce機(jī)制,并行計(jì)算訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最佳的分裂決策屬性作為節(jié)點(diǎn)構(gòu)造決策樹;分類模塊,用于根據(jù)所述決策樹,對(duì)輸入的數(shù)據(jù)記錄進(jìn)行分類。
6.根據(jù)權(quán)利要求5所述的采用決策樹的數(shù)據(jù)分類系統(tǒng),其特征在于,所述訓(xùn)練模塊,包括信息增益計(jì)算模塊,用于計(jì)算在當(dāng)前前綴信息下,當(dāng)前訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最大值作為當(dāng)前節(jié)點(diǎn)的分裂屬性,并計(jì)算決策規(guī)則以及傳給下一層的前綴 fn息決策規(guī)則判斷模塊,用于判斷是否產(chǎn)生了新的決策規(guī)則,若是,則將產(chǎn)生的新的決策規(guī)則保存到規(guī)則集中,同時(shí)刪除當(dāng)前訓(xùn)練數(shù)據(jù)中包含該規(guī)則的樣本,產(chǎn)生新的數(shù)據(jù)集,觸發(fā)前綴信息判斷模塊;否則,直接觸發(fā)前綴信息判斷模塊;前綴信息判斷模塊,用于判斷是否產(chǎn)生新的前綴信息,若是,則觸發(fā)閾值判斷模塊;否則結(jié)束訓(xùn)練,根據(jù)計(jì)算得到的決策規(guī)則構(gòu)建決策樹;閾值判斷模塊,決策樹層數(shù)加一,判斷當(dāng)前決策樹的層數(shù)是否小于訓(xùn)練數(shù)據(jù)中包含的所有屬性的總數(shù),若是,則觸發(fā)信息增益計(jì)算模塊;否則結(jié)束訓(xùn)練,根據(jù)計(jì)算得到的決策規(guī)則構(gòu)建決策樹。
7.根據(jù)權(quán)利要求5所述的采用決策樹的數(shù)據(jù)分類系統(tǒng),其特征在于,所述訓(xùn)練模塊中, 在進(jìn)行屬性的信息增益計(jì)算時(shí)采用MapReduce函數(shù)采集數(shù)據(jù),在Map函數(shù)中,根據(jù)頭文件信息對(duì)讀入的每一行樣本進(jìn)行解析,產(chǎn)生中間的<key,value〉對(duì),key為前綴信息+類別信息+條件屬性的名字+條件屬性的值或者前綴信息+類別信息,若沒有前綴信息,則為空, value為l,Map函數(shù)的輸入key和value分別為樣本的在分布式文件系統(tǒng)上偏移位置和樣本本身,Reduce函數(shù)對(duì)中間<key,value〉對(duì)進(jìn)行融合。
8.根據(jù)權(quán)利要求5所述的采用決策樹的數(shù)據(jù)分類系統(tǒng),其特征在于,所述分類模塊,控制每個(gè)節(jié)點(diǎn)將保存在HDFS文件系統(tǒng)中的構(gòu)建完成的決策樹提取出來,對(duì)輸入的數(shù)據(jù)記錄進(jìn)行分類。
全文摘要
本發(fā)明公開了一種采用決策樹的數(shù)據(jù)分類方法和系統(tǒng)。所述方法,包括下列步驟基于MapReduce機(jī)制,并行計(jì)算訓(xùn)練數(shù)據(jù)中包含的每個(gè)屬性的信息增益,選出最佳的分裂決策屬性作為節(jié)點(diǎn)構(gòu)造決策樹;根據(jù)所述決策樹,對(duì)輸入的數(shù)據(jù)記錄進(jìn)行分類。其實(shí)現(xiàn)了基于MapReduce的并行決策樹ID3算法,不僅可以處理大規(guī)模數(shù)據(jù)集,而且并行效率高,即實(shí)現(xiàn)構(gòu)建決策樹中節(jié)點(diǎn)內(nèi)部以及同一層節(jié)點(diǎn)之間的并行計(jì)算。
文檔編號(hào)G06F17/30GK102214213SQ20111014382
公開日2011年10月12日 申請(qǐng)日期2011年5月31日 優(yōu)先權(quán)日2011年5月31日
發(fā)明者何清, 莊福振 申請(qǐng)人:中國科學(xué)院計(jì)算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
岢岚县| 济南市| 交城县| 潮州市| 宿迁市| 平潭县| 成武县| 农安县| 黎川县| 平南县| 龙里县| 元谋县| 张掖市| 信宜市| 新田县| 晋宁县| 罗定市| 偃师市| 山西省| 邵武市| 西华县| 逊克县| 平舆县| 白城市| 花垣县| 巴南区| 伊宁县| 政和县| 鲁山县| 兰考县| 利川市| 潮州市| 石门县| 中西区| 都匀市| 玉林市| 酉阳| 姜堰市| 藁城市| 青田县| 上蔡县|