機器學習基礎(chǔ)及應(yīng)用項目6_第1頁
機器學習基礎(chǔ)及應(yīng)用項目6_第2頁
機器學習基礎(chǔ)及應(yīng)用項目6_第3頁
機器學習基礎(chǔ)及應(yīng)用項目6_第4頁
機器學習基礎(chǔ)及應(yīng)用項目6_第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

使用決策樹算法實現(xiàn)分類與回歸項目6項目目標知識目標掌握決策樹算法用于分類任務(wù)的基本原理。掌握決策樹算法用于回歸任務(wù)的基本原理。掌握ID3算法、C4.5算法和CART算法的基本原理。掌握決策樹算法的Sklearn實現(xiàn)方法。技能目標能夠使用決策樹算法訓練分類模型。能夠使用決策樹算法訓練回歸模型。能夠編寫程序,尋找最佳的決策樹深度值。素養(yǎng)目標關(guān)注國家資訊,增強民族意識,培養(yǎng)愛國主義精神。理解決策樹算法的基本原理,培養(yǎng)勇為人先的創(chuàng)新精神。小旌也想訓練一個這樣的模型,了解到利用決策樹算法即可實現(xiàn)這一功能,于是,他開始嘗試。小旌最近發(fā)現(xiàn)了一件有趣的事情,某平臺可以根據(jù)人的身高和體重信息判定其性別。項目導入小旌采用的數(shù)據(jù)集是某平臺的客戶信息數(shù)據(jù)集(見本書配套素材“item6/genter-data-y.txt”文件),該數(shù)據(jù)集共有100條數(shù)據(jù),每條數(shù)據(jù)包含3個特征變量和1個類別值。其中,特征變量分別是年齡、身高和體重,類別值是每個客戶的性別,部分數(shù)據(jù)如表6-1所示(“性別”列中M表示女,F(xiàn)表示男)。表6-1客戶信息數(shù)據(jù)集(部分)年齡/(歲)身高/(cm)體重/(kg)性別2116360M2216456M2117050M2316856M2116960M…………2116970F2216060F2116855F2316765F2118071F項目導入小旌打算基于客戶信息數(shù)據(jù)集,使用決策樹算法訓練一個能夠判定性別的分類器,并使用Matplotlib畫圖,顯示該分類器的分類效果。項目導入項目分析按照項目要求,使用決策樹算法訓練能夠判定性別的分類器的步驟分解如下。第1步:數(shù)據(jù)準備。使用Pandas讀取客戶信息數(shù)據(jù)并為數(shù)據(jù)集指定列名稱,然后將數(shù)據(jù)集進行輸出。第2步:數(shù)據(jù)預處理。先將“身高”和“體重”數(shù)據(jù)轉(zhuǎn)換為浮點型數(shù)據(jù),然后對“性別”列進行數(shù)值化處理,并將處理后的數(shù)據(jù)集進行輸出。第3步:數(shù)據(jù)集可視化展示。提取數(shù)據(jù)集中的“身高”列和“體重”列作為特征變量;提取性別列作為標簽,然后使用Matplotlib繪制數(shù)據(jù)集的散點圖。第4步:確定決策樹的最佳深度值。首先,導入需要的庫,將數(shù)據(jù)集劃分為訓練集與測試集;然后,建立多個決策樹模型(每個模型取不同的深度值),計算每個模型的預測誤差率;最后,使用Matplotlib繪制決策樹深度與模型預測誤差率的關(guān)系圖,確定決策樹的最佳深度值。第5步:訓練與評估模型。使用決策樹算法訓練模型,并對模型進行評估,輸出評估結(jié)果。第6步:顯示分類結(jié)果。繪制分類決策邊界與樣本數(shù)據(jù)圖,顯示分類結(jié)果。使用決策樹算法訓練客戶信息數(shù)據(jù)集的分類模型,需要先理解決策樹算法的基本原理。本項目將對相關(guān)知識進行介紹,包括決策樹算法用于分類與回歸任務(wù)的基本原理,ID3算法,C4.5算法,CART算法,以及決策樹算法的Sklearn實現(xiàn)方法。項目準備全班學生以3~5人為一組進行分組,各組選出組長,組長組織組員掃碼觀看“決策樹算法的基本原理”視頻,討論并回答下列問題。問題1:簡述決策樹算法用于分類任務(wù)的基本原理。問題2:簡述決策樹算法用于回歸任務(wù)的基本原理。問題3:常用的構(gòu)造決策樹的算法有哪幾種?點擊此處播放微課決策樹算法的基本原理決策樹算法的基本原理決策樹算法的Sklearn實現(xiàn)/項目導航/6.16.26.1決策樹算法的基本原理6.1決策樹算法的基本原理10決策樹(decisiontree)是一種基于樹結(jié)構(gòu)的機器學習模型,可以用于分類與回歸任務(wù)。在機器學習中,決策樹分為分類樹和回歸樹,當對樣本的所屬類別進行預測時使用分類樹;當對樣本的某個值進行預測時使用回歸樹。6.1.1決策樹算法的原理分析11分類任務(wù)的目標是通過對數(shù)據(jù)集的“學習”,總結(jié)一種決策規(guī)則,預測未知樣本的類別。使用決策樹算法進行分類的原理是給定一個訓練數(shù)據(jù)集,根據(jù)訓練集構(gòu)造決策樹,根據(jù)決策樹寫出對應(yīng)的決策規(guī)則,然后使用決策規(guī)則對“待分類樣本”進行分類。1.分類決策樹的基本原理6.1.1決策樹算法的原理分析12例如,購買計算機的客戶數(shù)據(jù)集(見表6-2),使用決策樹算法訓練模型,可構(gòu)造如圖分類決策樹所示的決策樹。

客戶編號年齡收入是否為學生信用情況購買計算機情況1青年高否一般沒有購買2青年高否好沒有購買3中年高否一般已購買4老年中否一般已購買5老年高是一般已購買6老年高是好沒有購買7中年中是好已購買8青年中否一般沒有購買9青年高是一般已購買10老年中是一般已購買11青年中是好已購買12中年中否好已購買13中年高是一般已購買14老年中否好沒有購買表6-2購買計算機的客戶數(shù)據(jù)集1.分類決策樹的基本原理6.1.1決策樹算法的原理分析13從圖可以看出,決策樹的根節(jié)點和內(nèi)部節(jié)點為數(shù)據(jù)集中的特征屬性,葉節(jié)點為類別標簽,根據(jù)特征屬性的取值來判斷進入哪一個分支。分類決策樹1.分類決策樹的基本原理6.1.1決策樹算法的原理分析14決策樹分類采用自頂向下的遞歸方式,在決策樹內(nèi)部節(jié)點進行屬性值的比較,根據(jù)不同的屬性值判斷從該節(jié)點向下的分支,在葉節(jié)點上得到結(jié)論。所以,從決策樹的根節(jié)點到葉節(jié)點的每一條路徑都對應(yīng)一條合取規(guī)則。例如,圖分類決策樹的決策樹對應(yīng)的決策規(guī)則為使用這些決策規(guī)則就可以對新的待測樣本的類別進行判定。例如,新樣本(老年,收入中等,不是學生,信用一般)的類別判定為已購買計算機。1.分類決策樹的基本原理6.1.1決策樹算法的原理分析15回歸任務(wù)研究的是一組變量與另一組變量之間的關(guān)系,其預測結(jié)果是連續(xù)的數(shù)值?;貧w決策樹的基本原理是給定一個數(shù)據(jù)集,根據(jù)數(shù)據(jù)集構(gòu)造決策樹,根據(jù)決策樹將特征空間劃分為若干單元,每個單元有一個特定的輸出(如訓練集對應(yīng)樣本的平均值)。對于新的待測樣本,只要按照特征值將其歸到某個單元,即可得到相應(yīng)的輸出值。2.回歸決策樹的基本原理6.1.1決策樹算法的原理分析16例如,回歸決策樹測試數(shù)據(jù)集(見表6-3),使用決策樹算法訓練模型,可構(gòu)造如圖a所示的決策樹(使用決策樹算法對表6-3中的數(shù)據(jù)集進行回歸預測的程序見例6-5)。表6-3回歸決策樹測試數(shù)據(jù)集xyxy142839510719

圖a

回歸決策樹2.回歸決策樹的基本原理6.1.1決策樹算法的原理分析17回歸任務(wù)中,數(shù)據(jù)集的特征變量一般是連續(xù)的數(shù)值。因此,決策樹的根節(jié)點和內(nèi)部節(jié)點一般為數(shù)據(jù)集的特征屬性,每個分支為特征屬性值中兩相鄰點的中值(將特征屬性值進行排序,然后取相鄰兩點的中值),葉節(jié)點為模型的輸出值。根據(jù)圖a中的回歸決策樹可將特征空間劃分為多個單元,每個單元有一個特定的輸出值(圖a中的輸出值為各對應(yīng)點的平均值),如圖b所示。圖b

回歸決策樹劃分特征空間這樣,對新的待測樣本進行預測時,只要按照特征值將其歸到某個單元,即可得到相應(yīng)的輸出值。例如,新樣本()的輸出值為9.5。2.回歸決策樹的基本原理6.1.1決策樹算法的原理分析18決策樹算法可用于分類任務(wù)和回歸任務(wù)。無論是分類任務(wù)還是回歸任務(wù),決策樹算法的關(guān)鍵是構(gòu)造合適的決策樹,只要有了決策樹,就可以根據(jù)決策樹寫出分類決策規(guī)則或劃分特征空間,然后預測新數(shù)據(jù)。構(gòu)造決策樹常用的算法有ID3算法、C4.5算法和CART算法。2.回歸決策樹的基本原理6.1.2ID3算法19ID3算法構(gòu)造決策樹的基本思想是:以信息增益最大的特征屬性作為分類屬性,基于貪心策略的自頂向下搜索遍歷決策樹空間,通過遞歸方式構(gòu)建決策樹,即比較每個特征屬性的信息增益值,每次選擇信息增益最大的節(jié)點作為決策樹(或子樹)的根節(jié)點。信息增益是信息論中的概念,指的是得知特征屬性A的信息而使得類別屬性Y的取值不確定性減少的程度。用數(shù)學表達式可表示為其中,表示類別Y的熵(無條件熵),

表示已知特征屬性A的值后類別屬性的條件熵。表示因為知道特征屬性A的值后導致類別屬性熵的減小值(即類別屬性Y的取值不確定性減少的程度),稱為信息增益。的值越大,說明特征屬性A提供的信息越多。6.1.2ID3算法20熵的概念來源于信息論。信息論認為,信息是對客觀事物不確定性的消除或減少。接收者收到某一信息后所獲得的信息量,可以用接收者在通信前后不確定性的消除量來度量。生活中有這樣的直觀經(jīng)驗:北方的秋天常常是秋高氣爽的天氣,如果天氣預報是“明天是一個晴天”,人們習以為常,因此得到的信息量很??;但如果天氣預報是“明天有雪”,人們將感到十分意外,這個異常的信息給人們帶來了極大的信息量??梢?,信息量的大小與消息出現(xiàn)的概率成反比?;谏鲜鎏匦?,可將信息量的大小定義為消息出現(xiàn)概率的倒數(shù)的對數(shù),用數(shù)學表達式表示為其中,表示消息的信息量(一般稱為自信息量),表示消息發(fā)生的概率。當對數(shù)底為2時,信息量的單位為比特(bit);當對數(shù)底為e時,信息量的單位為奈特(nit)。目前使用最廣泛的單位是比特,本書也使用比特作為信息量的單位。1.熵6.1.2ID3算法21通常,信源能發(fā)出若干條信息(如天氣預報可能會播報晴天和雨天兩種信息,晴天的概率為0.25,陰天的概率為0.75),很多時候人們所關(guān)心的并不是每條信息攜帶的信息量,而是信源發(fā)出的所有信息的平均信息量。平均信息量指每條信息所含信息量的統(tǒng)計平均值,因此有N條消息的離散信源的平均信息量為這個公式與統(tǒng)計物理學中熵的計算公式完全相同,因此把信源輸出信息的平均信息量稱為信源的熵。1.熵6.1.2ID3算法22條件熵是指在獲得信源X發(fā)出的信息后,信宿Y仍然存在的不確定性。在給定X(即各個)的條件下,Y集合的條件熵為。條件熵表示已知條件X后,Y仍然存在的不確定度,其公式如下。2.條件熵6.1.2ID3算法23使用ID3算法構(gòu)造決策樹的流程如下。(1)確定決策樹(或子樹)的根節(jié)點。首先,計算給定數(shù)據(jù)集中類別屬性的信息熵;然后,計算給定數(shù)據(jù)集中每個特征屬性的條件熵;最后,計算各個特征屬性對應(yīng)類別屬性的信息增益,并選擇信息增益最大的特征屬性作為決策樹(或子樹)的根節(jié)點。(2)更新數(shù)據(jù)集,根據(jù)決策樹(或子樹)根節(jié)點特征屬性的取值將訓練數(shù)據(jù)集分配到各分支中。(3)重復以上步驟,直至子集包含單一特征屬性或節(jié)點的樣本個數(shù)小于預定閾值。(4)生成ID3決策樹。3.ID3算法的流程6.1.2ID3算法24【例6-1】某單位要組織一次戶外活動,活動時間將至,活動策劃人需要根據(jù)天氣情況評判此次活動是否能如期進行。為此,他收集了以往關(guān)于天氣情況和是否進行活動的數(shù)據(jù)集,如表6-4所示。使用ID3算法構(gòu)造決策樹,判定活動(活動當天天氣:陰,寒冷,濕度高,風速弱)是否能如期進行。表6-4天氣情況和是否進行活動的數(shù)據(jù)集序號天氣溫度濕度風速活動1晴炎熱高弱取消2晴炎熱高強取消3陰炎熱高弱進行4雨適中高弱進行5雨寒冷正常弱進行6雨寒冷正常強取消7陰寒冷正常強進行8晴適中高弱取消9晴寒冷正常弱進行10雨適中正常弱進行11晴適中正常強進行12陰適中高強進行13陰炎熱正常弱進行14雨適中高強取消3.ID3算法的流程6.1.2ID3算法25【解】

ID3算法構(gòu)造決策樹并對新樣本進行預測的步驟如下。(1)確定根節(jié)點。數(shù)據(jù)集中共有4個特征屬性,使用ID3算法構(gòu)造決策樹需要計算每個屬性的信息增益,確定決策樹的根節(jié)點。各個特征屬性對應(yīng)類別屬性的信息增益用公式表示為需要分別計算、、、與的值。3.ID3算法的流程6.1.2ID3算法26①計算類別屬性“活動”的熵?!盎顒印边@一列中,“進行”出現(xiàn)了9次,“取消”出現(xiàn)了5次。因此,進行活動的概率為9/14,取消活動的概率為5/14。則無條件熵的值為3.ID3算法的流程(1)確定根節(jié)點。6.1.2ID3算法27②已知天氣的情況下,計算類別屬性“活動”的條件熵,數(shù)學表達式為“天氣”這一列有晴、陰和雨3個屬性值,其出現(xiàn)的概率分別為5/14、4/14和5/14。當天氣為晴時,活動進行的概率為2/5,活動取消的概率為3/5;當天氣為陰時,活動進行個概率為1,活動取消的概率為0;當天氣為雨時,活動進行的概率為3/5,活動取消的概率為2/5。于是,有因此,已知天氣情況下,類別屬性“活動”的條件熵為(1)確定根節(jié)點。3.ID3算法的流程6.1.2ID3算法28③用同樣的方法,分別計算已知溫度情況下類別屬性“活動”的條件熵,已知濕度情況下類別屬性“活動”的條件熵和已知風速情況下類別屬性“活動”的條件熵,即、和的值,其結(jié)果如下。3.ID3算法的流程(1)確定根節(jié)點。6.1.2ID3算法29④計算各個特征屬性對類別屬性的信息增益??梢姡卣鲗傩浴疤鞖狻钡男畔⒃鲆孀畲?,故應(yīng)選擇“天氣”作為決策樹的根節(jié)點,如圖所示。決策樹根節(jié)點3.ID3算法的流程(1)確定根節(jié)點。6.1.2ID3算法30(2)確定“天氣=雨”分支的根節(jié)點。首先,找到“天氣=雨”條件下的所有樣本,如表6-5所示。表6-5“天氣=雨”條件下的樣本序號天氣溫度濕度風速活動4雨適中高弱進行5雨寒冷正常弱進行6雨寒冷正常強取消10雨適中正常弱進行14雨適中高強取消3.ID3算法的流程6.1.2ID3算法31“天氣=陰”下所有樣本的類別均為“進行”。因此,只需要確定“天氣=雨”和“天氣=晴”兩個分支的根節(jié)點即可。指點迷津6.1.2ID3算法32依據(jù)表6-5中的數(shù)據(jù)確定本分支的根節(jié)點,與“確定根節(jié)點”的步驟相同,需要分別計算溫度、濕度和風速3個特征屬性對類別屬性的信息增益,計算結(jié)果如下。可見,特征屬性“風速”的信息增益最大,故選擇“風速”作為“天氣=雨”分支的根節(jié)點。(2)確定“天氣=雨”分支的根節(jié)點。3.ID3算法的流程6.1.2ID3算法33(3)確定“天氣=晴”分支的根節(jié)點。首先,找到“天氣=晴”條件下的所有樣本,如表6-6所示。序號天氣溫度濕度風速活動1晴炎熱高弱取消2晴炎熱高強取消8晴適中高弱取消9晴寒冷正常弱進行11晴適中正常強進行表6-6“天氣=晴”條件下的樣本依據(jù)表6-6中的數(shù)據(jù)確定本分支的根節(jié)點,需要分別計算溫度、濕度和風速3個特征屬性對類別屬性的信息增益。通過計算可知,特征屬性“濕度”的信息增益最大,故選擇“濕度”作為“天氣=晴”分支的根節(jié)點。此時,每個葉節(jié)點中所有的樣本都屬于同一類別,ID3算法結(jié)束,分類完成,最終得到的決策樹如圖所示。完整決策樹3.ID3算法的流程6.1.2ID3算法34(4)根據(jù)決策樹寫出決策規(guī)則。從決策樹的根節(jié)點到葉節(jié)點的每條路徑對應(yīng)一條合取規(guī)則,故圖完整決策樹中決策樹對應(yīng)的決策規(guī)則為(5)使用決策規(guī)則對新樣本進行預測。對于新樣本(陰,寒冷,濕度高,風速弱),根據(jù)決策規(guī)則,應(yīng)劃分為“進行”這個類別。因此,活動不會取消,可以如期進行。3.ID3算法的流程6.1.2ID3算法35ID3算法的優(yōu)點在于算法理論清晰、方法簡單、易于理解,其缺點如下。(1)信息增益的計算偏向于取值較多的特征屬性。(2)ID3算法容易產(chǎn)生過擬合現(xiàn)象。(3)ID3算法只能用于離散值屬性,不能直接用于連續(xù)值屬性。(4)抗噪性差,訓練集中正例和反例的比例較難控制。(5)ID3算法需要多次遍歷數(shù)據(jù)庫,效率不如樸素貝葉斯算法高。高手點撥6.1.3C4.5算法36ID3算法存在的一個問題是,信息增益偏向擁有屬性值較多的特征屬性,因為從熵的計算公式來看,特征取值越多,熵越大。為此,人們又提出了C4.5算法。C4.5算法最重要的改進是用信息增益率取代信息增益作為衡量特征屬性的標準。信息增益率使用“分裂信息”值將信息增益規(guī)范化,其數(shù)學表達式為其中,表示信息增益率,S表示訓練樣本集,A表示特征屬性;表示信息增益;表示分裂信息,分裂信息的數(shù)學表達式為(表示含有第i個屬性值的樣本集)6.1.3C4.5算法37例如,在例6-1中,特征屬性“天氣”中取值晴、陰和雨的概率分別為5/14、4/14和5/14,則“天氣”的分裂信息和信息增益率分別為一個特征屬性分割樣本的屬性值越多,均勻性越強,該屬性的分裂信息就越大,信息增益率就越小。因此,信息增益率降低了選擇那些值較多且均勻分布的特征屬性的可能性。6.1.3C4.5算法38【例6-2】使用C4.5算法重新對例6-1的數(shù)據(jù)進行決策樹分類。【解】C4.5算法構(gòu)造決策樹的步驟如下。(1)計算各個特征屬性對類別屬性的信息增益。信息增益的計算方法與ID3算法相同。(2)計算各個特征屬性的分裂信息。6.1.3C4.5算法39(3)計算各個特征的信息增益率。可見,特征屬性“天氣”的信息增益率最大,故選擇“天氣”作為決策樹的根節(jié)點。(4)“天氣=陰”分支下所有樣本的類別均為“進行”。至此,所有樣本都已確定類別,C4.5算法終止,最終得到的決策樹如圖完整決策樹所示。接下來確定“天氣=雨”和“天氣=晴”兩個分支的根節(jié)點。分別計算“天氣=雨”和“天氣=晴”兩個分支子數(shù)據(jù)集中各個特征屬性的信息增益率。通過計算可知,“天氣=雨”子集中,“風速”屬性的信息增益率最大;“天氣=晴”子集中,“濕度”屬性的信息增益率最大,因此分別選擇“風速”和“濕度”作為“天氣=雨”和“天氣=晴”兩個分支的根節(jié)點。40C4.5算法在ID3算法的基礎(chǔ)上進行了兩方面的改進,一方面,C4.5算法可以避免偏向取值較多的特征屬性;另一方面,C4.5算法能夠處理連續(xù)型數(shù)值數(shù)據(jù)。C4.5算法的缺點如下。(1)在構(gòu)造決策樹的過程中,需要對數(shù)據(jù)集進行多次順序掃描和排序,導致算法計算效率低。(2)決策樹算法容易過擬合,因此須對構(gòu)造的決策樹進行剪枝處理。C4.5的剪枝算法還有優(yōu)化的空間。(3)C4.5算法構(gòu)造的是多叉樹。很多時候,在計算機中二叉樹要比多叉樹運算效率高。6.1.3C4.5算法高手點撥6.1.4CART算法41CART算法既可用于分類也可用于回歸,它本質(zhì)上是對特征空間進行二元劃分,即CART算法構(gòu)造的是二叉樹,并可對離散屬性與連續(xù)屬性進行分裂。CART算法的基本思路是:使用基尼指數(shù)(giniindex)作為度量數(shù)據(jù)集純度的指標,其值越小,數(shù)據(jù)集樣本的純度越高,因此,選擇基尼指數(shù)最小的屬性作為決策樹的根節(jié)點。6.1.4CART算法42如果訓練數(shù)據(jù)集D根據(jù)特征A是否取某一可能值被劃分為和兩部分,則在特征屬性A的條件下,訓練數(shù)據(jù)集D的基尼指數(shù)為其中,基尼值的計算公式為(式中表示類別i在數(shù)據(jù)集中出現(xiàn)的概率)1.基尼指數(shù)的計算公式6.1.4CART算法43使用CART算法構(gòu)造決策樹的流程如下。(1)計算訓練數(shù)據(jù)集中每個特征屬性中每個劃分(屬性值)對該數(shù)據(jù)集的基尼指數(shù)。(2)在所有特征屬性及其對應(yīng)劃分點(屬性值)中,選擇基尼指數(shù)最小的特征屬性與對應(yīng)的劃分點作為最優(yōu)特征屬性與最優(yōu)劃分點。(3)選擇最優(yōu)特征屬性作為決策樹(或子樹)的根節(jié)點,選擇最優(yōu)劃分點作為決策樹的兩個分支。(4)更新數(shù)據(jù)集。根據(jù)決策樹(或子樹)根節(jié)點特征屬性的取值將訓練數(shù)據(jù)集分配到兩個分支中。(5)重復以上步驟,直至節(jié)點的樣本個數(shù)小于預定閾值或者樣本集的基尼指數(shù)小于預定閾值(樣本基本屬于同一類)。(6)生成CART決策樹。2.CART算法的流程6.1.4CART算法44【例6-3】銀行在辦理貸款業(yè)務(wù)時,需要對客戶是否會拖欠貸款進行評估,現(xiàn)有某銀行的客戶數(shù)據(jù)集(見表6-7),使用CART算法構(gòu)造決策樹,判定新用戶(有房,單身,年收入90k)是否會拖欠貸款。表6-7銀行客戶數(shù)據(jù)集序號是否有房婚姻狀況年收入/(k)是否拖欠貸款1是單身125否2否已婚100否3否單身70否4是已婚120否5否離異95是6否已婚60否7是離異220否8否單身85是9否已婚75否10否單身90是2.CART算法的流程6.1.4CART算法45【解】

CART算法構(gòu)造決策樹并對新樣本進行預測的步驟如下。(1)“是否有房”特征屬性只有兩個取值,可以根據(jù)其取值“是”或“否”將數(shù)據(jù)集劃分為兩部分,計算每個部分的基尼值,然后計算其基尼指數(shù)。①計算取值為“是”的基尼值。屬性值為“是”的3個樣本中,有0個拖欠貸款(占0/3),有3個沒有拖欠貸款(占3/3),則基尼值為②計算取值為“否”的基尼值。屬性值為“否”的7個樣本中,有3個拖欠貸款(占3/7),有4個沒有拖欠貸款(占4/7),則基尼值為③計算已知“是否有房”條件下,類別屬性的基尼指數(shù)。2.CART算法的流程6.1.4CART算法46(2)“婚姻狀況”特征屬性有3個取值,根據(jù)每個值可將數(shù)據(jù)集進行劃分,計算每個劃分的基尼指數(shù)。①計算“婚姻狀況”為“單身”條件下,類別屬性的基尼指數(shù)。屬性值為“單身”的樣本有4個(占總樣本的4/10),其中有2個拖欠貸款(占2/4),有2個沒有拖欠貸款(占2/4);屬性值為“已婚”或“離異”的樣本有6個(占總樣本的6/10),其中有1個拖欠貸款(占1/6),有5個沒有拖欠貸款(占5/6),則其基尼指數(shù)為②使用同樣的方法計算“婚姻狀況”為“已婚”條件下,類別屬性的基尼指數(shù)。③使用同樣的方法計算“婚姻狀況”為“離異”條件下,類別屬性的基尼指數(shù)。2.CART算法的流程6.1.4CART算法47(3)“年收入”特征屬性的取值是連續(xù)性數(shù)據(jù),這些連續(xù)性數(shù)據(jù)可將數(shù)據(jù)集進行不同的劃分,計算每個劃分的基尼指數(shù)。①對“年收入”的屬性值進行排序,然后分別計算兩個相鄰值的中值。本例有10個屬性值,因此有9個中值,分別是65、72.5、80、87.5、92.5、97.5、110、122.5和172.5。②計算“年收入”劃分點為65時,類別屬性的基尼指數(shù)。屬性值小于或等于65的樣本有1個(占總樣本的1/10),其中有0個拖欠貸款(占0/1),有1個沒有拖欠貸款(占1/1);屬性值大于65的樣本有9個(占總樣本的9/10),其中有3個拖欠貸款(占3/9),有6個沒有拖欠貸款(占6/9),則其基尼指數(shù)為2.CART算法的流程6.1.4CART算法48③使用同樣的方法計算“年收入”為其他劃分點時,類別屬性的基尼指數(shù),計算結(jié)果如表6-8所示。表6-8連續(xù)性數(shù)據(jù)的基尼指數(shù)

劃分點

72.58087.592.597.5110122.5172.5符號≤>

≤>

≤>

≤>

≤>

≤>

≤>

≤>

是否拖欠貸款是(樣本數(shù))0303122130303030否(樣本數(shù))2534343434435261基尼指數(shù)0.375000.342860.416670.400000.300000.342860.375000.40000(3)“年收入”特征屬性的取值是連續(xù)性數(shù)據(jù),這些連續(xù)性數(shù)據(jù)可將數(shù)據(jù)集進行不同的劃分,計算每個劃分的基尼指數(shù)。2.CART算法的流程6.1.4CART算法49(4)在這些特征屬性與對應(yīng)的劃分點中,選擇基尼指數(shù)最小的特征屬性與對應(yīng)的劃分點作為最優(yōu)特征屬性與最優(yōu)劃分點。比較發(fā)現(xiàn),“已婚”作為“婚姻狀況”的劃分點與“97.5”作為“年收入”的劃分點的基尼指數(shù)相同,選擇其中一個作為最優(yōu)特征屬性和最優(yōu)劃分點即可。本例中選擇“婚姻狀況”作為最優(yōu)特征屬性,其對應(yīng)屬性值“已婚”作為最優(yōu)劃分點,得到的決策樹根節(jié)點如圖所示。決策樹根節(jié)點2.CART算法的流程6.1.4CART算法50(5)確定右分支的根節(jié)點。首先,找到該條件下所有的樣本,如表6-9所示。表6-9右分支數(shù)據(jù)集序號是否有房婚姻狀況年收入/(k)是否拖欠貸款1是單身125否3否單身70否5否離異95是7是離異220否8否單身85是10否單身90是根據(jù)表6-9的樣本數(shù)據(jù),重復步驟(1)~步驟(4),確定該分支的根節(jié)點為“是否有房”。2.CART算法的流程6.1.4CART算法51(6)繼續(xù)進行同樣的運算,最后得到的決策樹如圖所示。完整決策樹2.CART算法的流程6.1.4CART算法52(7)根據(jù)決策樹寫出決策規(guī)則。從決策樹的根節(jié)點到葉節(jié)點的每條路徑對應(yīng)一條合取規(guī)則,故圖中決策樹對應(yīng)的決策規(guī)則為(8)使用決策規(guī)則對新樣本進行預測。對于新用戶(有房,單身,年收入90k),根據(jù)決策規(guī)則,應(yīng)劃分為“沒有拖欠貸款”這個類別。2.CART算法的流程完整決策樹53022年9月1日~9月3日,由國家發(fā)展和改革委員會、工業(yè)和信息化部、科學技術(shù)部、國家互聯(lián)網(wǎng)信息辦公室、中國科學院、中國工程院、中國科學技術(shù)協(xié)會和上海市人民政府共同主辦的世界人工智能大會(WAIC)在我國上海隆重舉行。大會自2018年創(chuàng)辦以來,始終堅持高端化、國際化、專業(yè)化、市場化和智能化的辦會理念,逐步成長為全球人工智能領(lǐng)域最具影響力的行業(yè)盛會。本次會議主題為“智聯(lián)世界,元生無界”,采用“1+1+2+10+N”活動架構(gòu),即1場開幕式、1場閉幕式、2場全體會議(主題分別為科技創(chuàng)新和產(chǎn)業(yè)發(fā)展)、10場主題論壇,以及N場生態(tài)論壇。其中,產(chǎn)業(yè)發(fā)展全體會議邀請了中外知名企業(yè)代表,圍繞“AI賦能百業(yè)”“促進數(shù)字化轉(zhuǎn)型”等話題進行高端對話,討論人工智能和元宇宙等產(chǎn)業(yè)為經(jīng)濟帶來的新動能,展望智能時代世界經(jīng)濟復蘇的新機遇。據(jù)阿里巴巴集團副總裁、阿里云全球銷售總裁介紹,目前我國企業(yè)采用人工智能(AI)的比例為58%,居全球首位。預計到2025年,中國將成為全球最大的數(shù)據(jù)圈,而智能計算也將成為算力增長的主要驅(qū)動力。6.1.4CART算法素養(yǎng)之窗(1)簡述決策樹算法用于分類任務(wù)的基本原理。(2)簡述決策樹算法用于回歸問題的基本原理。課堂訓練決策樹算法的基本原理決策樹算法的原理分析ID3算法C4.5算法CART算法課堂小結(jié)6.2決策樹算法的Sklearn實現(xiàn)6.2.1Sklearn中的決策樹模塊57Sklearn的tree模塊提供了DecisionTreeClassifier和DecisionTreeRegressor類,分別用于實現(xiàn)決策樹分類和回歸算法。在Sklearn中,可通過下面語句導入決策樹算法模塊。fromsklearn.treeimportDecisionTreeClassifier #導入決策樹分類模塊fromsklearn.treeimportDecisionTreeRegressor #導入決策樹回歸模塊6.2.1Sklearn中的決策樹模塊58DecisionTreeClassifier類和DecisionTreeRegressor類都有如下幾個參數(shù)。(1)參數(shù)max_depth用于設(shè)置決策樹的最大深度,取值為正數(shù)或None。決策樹的深度過大,容易出現(xiàn)過擬合現(xiàn)象,故推薦深度為5~20。(2)參數(shù)criterion用于設(shè)置特征屬性的評價標準,DecisionTreeClassifier中參數(shù)criterion的取值有g(shù)ini和entronpy,gini表示基尼指數(shù),entronpy表示信息增益,默認值為gini;DecisionTreeRegressor中criterion的取值有mse和mae,mse表示均方差,mae表示平均絕對誤差,默認值為mse。(3)參數(shù)splitter表示特征劃分點的選擇標準。取值有best和random,默認值為random。best表示在所有特征中找到最好的劃分,適合樣本量較小的情況;random表示隨機抽取部分特征,再在這些特征中找到最好的劃分,如果樣本量非常大,應(yīng)選擇random,可以減少計算開銷。(4)參數(shù)min_samples_split用于設(shè)置內(nèi)部節(jié)點的最小樣本數(shù)量,當樣本數(shù)量小于此值時,節(jié)點將不再劃分。(5)參數(shù)min_samples_leaf用于設(shè)置葉子節(jié)點的最少樣本數(shù),如果某葉子節(jié)點數(shù)目小于該值,則會和兄弟節(jié)點一起被剪枝。(6)參數(shù)min_impurity_split用于限制決策樹的增長,如果某節(jié)點的不純度(基尼指數(shù)、信息增益、均方差、絕對差)小于這個閾值,則該節(jié)點不再生成子節(jié)點。6.2.2決策樹算法的應(yīng)用舉例59(1)確定決策樹的最佳深度值。訓練決策樹模型時,深度值的設(shè)置會直接影響決策樹的分類效果,如果深度設(shè)置不恰當,會導致模型的泛化能力不足或過擬合。因此,在使用決策樹建立模型之前需要確定最佳的深度值?!纠?-4】使用決策樹算法對Sklearn自帶的鳶尾花數(shù)據(jù)集進行分類?!境绦蚍治觥?/p>

使用決策樹算法對鳶尾花數(shù)據(jù)集進行分類的步驟如下。60【運行結(jié)果】

6.2.2決策樹算法的應(yīng)用舉例程序運行結(jié)果如圖所示。可見,當決策樹的深度為3、4、5或6時,分類效果最好。決策樹深度與模型預測誤差率關(guān)系(1)確定決策樹的最佳深度值。【參考代碼】fromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitimportnumpyasnpfromsklearn.treeimportDecisionTreeClassifierfromsklearn.metricsimportaccuracy_scoreimportmatplotlib.pyplotasplt#提取特征,劃分數(shù)據(jù)集x,y=load_iris().data[:,2:4],load_iris().target #提取花瓣長度與花瓣寬度作為特征,訓練模型x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=0,test_size=50) #將數(shù)據(jù)集拆分為訓練集與測試集#決策樹深度與模型預測誤差率計算depth=np.arange(1,15)err_list=[]foriindepth:model=DecisionTreeClassifier(criterion='entropy',max_depth=i)model.fit(x_train,y_train)pred=model.predict(x_test)ac=accuracy_score(y_test,pred)err=1-acerr_list.append(err)#繪制決策樹深度與模型預測誤差率圖形plt.plot(depth,err_list,'ro-')plt.rcParams['font.sans-serif']='Simhei'plt.xlabel('決策樹深度')plt.ylabel('預測誤差率')plt.show()61【運行結(jié)果】

6.2.2決策樹算法的應(yīng)用舉例程序運行結(jié)果如圖所示。決策樹模型評估結(jié)果(2)當“深度=3”時,建立決策樹模型并對其進行評估?!緟⒖即a】#訓練模型model=DecisionTreeClassifier(criterion='entropy',max_depth=3)model.fit(x_train,y_train)#評估模型pred=model.predict(x_test)ac=accuracy_score(y_test,pred)print('模型的預測準確率為:',ac)62【運行結(jié)果】

6.2.2決策樹算法的應(yīng)用舉例程序運行結(jié)果如圖所示??梢姡瑳Q策樹分類算法能有效對樣本進行分類。鳶尾花決策樹分類模型可視化圖形(3)繪制可視化圖像,顯示分類結(jié)果?!緟⒖即a】frommatplotlib.colorsimportListedColormap#繪制分類界面N,M=500,500 #網(wǎng)格采樣點的個數(shù)t1=np.linspace(0,8,N) #生成采樣點的橫坐標值t2=np.linspace(0,3,M) #生成采樣點的縱坐標值x1,x2=np.meshgrid(t1,t2) #生成網(wǎng)格采樣點x_new=np.stack((x1.flat,x2.flat),axis=1) #將采樣點作為測試點y_predict=model.predict(x_new) #預測測試點的值y_hat=y_predict.reshape(x1.shape) #與x1設(shè)置相同的形狀iris_cmap=ListedColormap(["#ACC6C0","#FF8080","#A0A0FF"]) #設(shè)置分類界面的顏色plt.pcolormesh(x1,x2,y_hat,cmap=iris_cmap)#繪制分類界面#繪制3種類別鳶尾花的樣本點plt.scatter(x[y==0,0],x[y==0,1],c='r',s=60,marker='o')plt.scatter(x[y==1,0],x[y==1,1],c='b',s=60,marker='s')plt.scatter(x[y==2,0],x[y==2,1],c='g',s=60,marker='v')#設(shè)置坐標軸的名稱并顯示圖形plt.rcParams['font.sans-serif']='Simhei'plt.xlabel('花瓣長度')plt.ylabel('花瓣寬度')plt.show()6.2.2決策樹算法的應(yīng)用舉例63(1)確定決策樹的最佳深度值?!纠?-5】使用決策樹算法對表6-3中的數(shù)據(jù)集進行回歸預測?!境绦蚍治觥?/p>

使用決策樹算法進行回歸預測的步驟如下。表6-3回歸決策樹測試數(shù)據(jù)集xyxy142839510719

64【運行結(jié)果】

6.2.2決策樹算法的應(yīng)用舉例程序運行結(jié)果如圖所示??梢?,決策樹的深度超過4時,其泛化能力不會再發(fā)生變化。決策樹深度與模型預測誤差率關(guān)系(1)確定決策樹的最佳深度值?!緟⒖即a】fromsklearn.treeimportDecisionTreeRegressorimportnumpyasnpimportmatplotlib.pyplotasplt#輸入數(shù)據(jù)集x=np.array([[1],[2],[3],[5],[7]])y=np.array([[4],[8],[9],[10],[19]])#決策樹深度與模型預測誤差率計算depth=np.arange(1,10)err_list=[]foriindepth:model=DecisionTreeRegressor(max_depth=i)model.fit(x,y)r2=model.score(x,y)err=1-r2err_list.append(err)#繪制決策樹深度與模型預測誤差率圖形plt.plot(depth,err_list,'ro-')plt.rcParams['font.sans-serif']='Simhei'plt.xlabel('決策樹深度')plt.ylabel('預測誤差率')plt.show()65【參考代碼】6.2.2決策樹算法的應(yīng)用舉例(2)當決策樹深度為3時,建立模型,并繪制模型的預測結(jié)果圖。#建立模型model=DecisionTreeRegressor(max_depth=3)model.fit(x,y)#繪制模型的預測結(jié)果圖plt.scatter(x,y,s=60,c='k',marker='o')x_test=np.arange(0.0,10,0.01).reshape(-1,1)plt.plot(x_test,model.predict(x_test),'g-')plt.legend(['data','DecisionTreeRegressor'])plt.show()程序運行結(jié)果如圖6-3所示。【運行結(jié)果】回歸決策樹劃分特征空間由于本例題中數(shù)據(jù)量較小,因此沒有將數(shù)據(jù)集進行拆分。如果數(shù)據(jù)量較大,就需要將數(shù)據(jù)集拆分為訓練集與測試集,然后分別進行模型的訓練與評估。666.2.2決策樹算法的應(yīng)用舉例指點迷津項目實施——根據(jù)身高與體重判定性別步驟1導入Pandas庫。步驟2讀取客戶信息數(shù)據(jù)并為數(shù)據(jù)集指定列名稱為age、height、weight和gender。步驟3輸出客戶信息數(shù)據(jù)集。67點擊此處播放微課數(shù)據(jù)準備1.數(shù)據(jù)準備68項目實施——根據(jù)身高與體重判定性別開始編寫程序前,須將本書配套素材“item6/genter-data-y.txt”文件復制到當前工作目錄中,也可將數(shù)據(jù)文件放于其他盤,如果放于其他盤,使用Pandas讀取數(shù)據(jù)文件時要指定路徑。指點迷津69項目實施——根據(jù)身高與體重判定性別【運行結(jié)果】

程序運行結(jié)果如圖所示??梢?,客戶信息數(shù)據(jù)集導入成功??蛻粜畔?shù)據(jù)集【參考代碼】importpandasaspd#讀取數(shù)據(jù)names=['age','height','weight','gender']dataset=pd.read_csv('gender-data-y.txt',delimiter=',',names=names)print('客戶信息數(shù)據(jù)集')print(dataset)1.數(shù)據(jù)準備項目實施——根據(jù)身高與體重判定性別70步驟1將“身高”和“體重”數(shù)據(jù)轉(zhuǎn)換為浮點型數(shù)據(jù)。步驟2導入preprocessing模塊,使用LabelEncoder()函數(shù)將數(shù)據(jù)集中“性別”列的文字轉(zhuǎn)換為數(shù)值標簽(M轉(zhuǎn)換為1,F(xiàn)轉(zhuǎn)換為0)。數(shù)據(jù)預處理點擊此處播放微課2.數(shù)據(jù)預處理71項目實施——根據(jù)身高與體重判定性別文字標簽轉(zhuǎn)換為數(shù)值標簽常用的方法有標簽編碼和獨熱編碼。是使用與類別數(shù)量相同長度的一組數(shù)字進行編碼的一種方法。例如,假設(shè)類別標簽“顏色”有紅、綠、藍3個值,用獨熱編碼轉(zhuǎn)換后,“紅”表示為[1,0,0],“綠”表示為[0,1,0],“藍”表示為[0,0,1]。在Sklearn中,獨熱編碼可使用OneHotEncoder()函數(shù)實現(xiàn)。(2)獨熱編碼是標簽被編碼為連續(xù)數(shù)值的一種方法。例如,用0表示男生,用1表示女生,就是標簽編碼。在Sklearn中,標簽編碼可使用LabelEncoder()函數(shù)實現(xiàn)。(1)標簽編碼指點迷津72項目實施——根據(jù)身高與體重判定性別【運行結(jié)果】

程序運行結(jié)果如圖所示??梢?,數(shù)據(jù)集增加了“l(fā)abel”列,即每條數(shù)據(jù)都增加了數(shù)值標簽。數(shù)據(jù)預處理結(jié)果步驟3輸出處理后的數(shù)據(jù)集。【參考代碼】fromsklearnimportpreprocessing#數(shù)據(jù)類型轉(zhuǎn)換(將身高和體重數(shù)據(jù)轉(zhuǎn)換為浮點型數(shù)據(jù))dataset['height']=dataset['height'].astype(float)dataset['weight']=dataset['weight'].astype(float)#對"性別"列進行數(shù)值化處理le=preprocessing.LabelEncoder() #標簽編碼dataset[‘label’]=le.fit_transform(dataset[‘gender’])

#轉(zhuǎn)換為數(shù)值標簽print('處理后的客戶信息數(shù)據(jù)集')print(dataset)2.數(shù)據(jù)預處理項目實施——根據(jù)身高與體重判定性別73步驟1提取數(shù)據(jù)集中的“height”列和“weight”列作為特征變量;提取“l(fā)abel”列作為標簽。步驟2使用Matplotlib繪制數(shù)據(jù)集的散點圖。點擊此處播放微課數(shù)據(jù)集可視化展示3.數(shù)據(jù)集可視化展示74項目實施——根據(jù)身高與體重判定性別【運行結(jié)果】

程序運行結(jié)果如圖所示??蛻粜畔?shù)據(jù)集散點圖【參考代碼】importmatplotlib.pyplotaspltdata=dataset.iloc[range(0,100),range(1,3)].values #提取身高和體重數(shù)據(jù)target=dataset.iloc[range(0,100),range(4,5)].values.reshape(1,100)[0] #提取標簽值#繪制散點圖plt.scatter(data[target==0,0],data[target==0,1],s=60,c='r',marker='o')#繪制標簽為0的樣本點plt.scatter(data[target==1,0],data[target==1,1],s=60,c='g',marker='^') #繪制標簽為1的樣本點#設(shè)置坐標軸的名稱并顯示圖形plt.rcParams['font.sans-serif']='Simhei'plt.xlabel('身高/cm')plt.ylabel('體重/kg')plt.show()3.數(shù)據(jù)集可視化展示項目實施——根據(jù)身高與體重判定性別75步驟1導入需要的庫。步驟2將數(shù)據(jù)集的特征變量與標簽,分別存儲在數(shù)組x與y中。步驟3將數(shù)據(jù)集劃分為訓練集與測試集,要求測試集的數(shù)據(jù)為30條。步驟4當決策樹的深度取值為1~15(不包含15)時,分別構(gòu)建相應(yīng)的決策樹模型,并計算每個模型的預測誤差率。步驟5使用Matplotlib繪制決策樹深度與模型預測誤差率的關(guān)系圖,確定決策樹的最佳深度值。點擊此處播放微課確定決策樹的最佳深度值4.確定決策樹的最佳深度值76項目實施——根據(jù)身高與體重判定性別【運行結(jié)果】

程序運行結(jié)果如圖所示??梢姡敍Q策樹的深度取值為5或6時,模型的預測誤差率最低。決策樹深度與模型預測誤差率關(guān)系【參考代碼】fromsklearn.model_selectionimporttrain_test_splitimportnumpyasnpfromsklearn.treeimportDecisionTreeClassifierfromsklearn.metricsimportaccuracy_score#劃分數(shù)據(jù)集x,y=data,targetx_train,x_test,y_train,y_test=train_test_split(x,y,test_size=30,random_state=0)#決策樹深度與模型預測誤差率計算depth=np.arange(1,15)err_list=[]foriindepth:model=DecisionTreeClassifier(criterion='entropy',max_depth=i)model.fit(x_train,y_train)pred=model.predict(x_test)ac=accuracy_score(y_test,pred)err=1-acerr_list.append(err)#繪制決策樹深度與模型預測誤差率圖形plt.plot(depth,err_list,'ro-')plt.rcParams['font.sans-serif']='Simhei'plt.xlabel('決策樹深度')plt.ylabel('預測誤差率')plt.show()4.確定決策樹的最佳深度值項目實施——根據(jù)身高與體重判定性別步驟1訓練模型,將決策樹深度值設(shè)置為5。步驟2導入模型評估函數(shù)classification_report(),使用該函數(shù)對模型進行評估并輸出模型的評估報告。77點擊此處播放微課訓練與評估模型5.訓練與評估模型78項目實施——根據(jù)身高與體重判定性別classification_report(y_true,y_pred)函數(shù)用于輸出分類模型的評估報告。其中,參數(shù)y_true表示樣本的真實標簽值,參數(shù)y_pred表示模型輸出的預測值。指點迷津79項目實施——根據(jù)身高與體重判定性別【運行結(jié)果】

程序運行結(jié)果如圖所示??梢姡敵龅哪P驮u估報告中包含每個類別的精確率、召回率、F1值和每個類別的樣本數(shù)量,模型的預測準確率,宏平均值,以及加權(quán)平均值,能夠?qū)δP瓦M行全面的評估。從評估報告中可以看出,模型的預測準確率為87%;測試集中男生共有15個,精確率為100%,召回率為73%,F(xiàn)1值為0.85;測試集中女生樣本共有15個,精確率為79%,召回率為100%,F(xiàn)1值為0.88。決策樹模型評估報告【參考代碼】fromsklearn.metricsimportclassification_report#決策樹深度取值為5時,訓練模型model=DecisionTreeClassifier(criterion='entropy',max_depth=5)model.fit(x_train,y_train)#對模型進行評估,并輸出評估報告pred=model.predict(x_test)re=classification_report(y_test,pred)print('模型評估報告:')print(re)5.訓練與評估模型80項目實施——根

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論