Python機器學(xué)習(xí)項目化教程(微課視頻版)課件 第7章 決策樹_第1頁
Python機器學(xué)習(xí)項目化教程(微課視頻版)課件 第7章 決策樹_第2頁
Python機器學(xué)習(xí)項目化教程(微課視頻版)課件 第7章 決策樹_第3頁
Python機器學(xué)習(xí)項目化教程(微課視頻版)課件 第7章 決策樹_第4頁
Python機器學(xué)習(xí)項目化教程(微課視頻版)課件 第7章 決策樹_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7章決策樹目錄CONTENTS7.1決策樹構(gòu)造基本原理7.2決策樹構(gòu)造過程7.3決策樹學(xué)習(xí)算法思想及實現(xiàn)7.4決策樹算法實現(xiàn)7.5本章小結(jié)7.1決策樹構(gòu)造基本原理學(xué)習(xí)基礎(chǔ)學(xué)習(xí)認(rèn)知能力信息素養(yǎng)高決策樹學(xué)習(xí)算法就是一棵樹的構(gòu)造過程,它通過不斷地選擇最優(yōu)特征,并根據(jù)該特征對訓(xùn)練數(shù)據(jù)進行分割,即對特征空間進行劃分,使得各個子數(shù)據(jù)集有一個最好的分類的過程。信息熵(InformationEntropy)是香農(nóng)于1948年提出的、用于度量樣本集合純度的概念,它表示事物的信息量大小和它的不確定性存在的關(guān)系。通常情況下,我們要搞清楚一件非常不確定的事情,或者我們一無所知的事情,需要了解大量信息。熵度量了事物的不確定性,越不確定的事物,其熵就越大。假設(shè)樣本集合為D,第k類樣本所占比例為pk(k=1,2,…,K),則D的信息熵表示為:

Ent(D)的值越小,則D的純度越高。若D有兩類樣本,即K=2,當(dāng)兩類樣本的數(shù)量一樣時,則Pk=1/2

,表示熵越大。7.1決策樹構(gòu)造基本原理學(xué)習(xí)基礎(chǔ)學(xué)習(xí)認(rèn)知能力信息素養(yǎng)高假設(shè)離散屬性a有H個可能的取值,若使用a來對樣本集D進行劃分,則會產(chǎn)生H個分支結(jié)點,設(shè)第k個分支結(jié)點上的樣本數(shù)為,根據(jù)式7-1可得到該分支結(jié)點上的信息熵,考慮到不同分支結(jié)點上的樣本數(shù)不同,給第k個分支結(jié)點賦予相應(yīng)的權(quán)值,于是可得到a作為樣本集D劃分屬性所得到的信息增益為:7.2決策樹構(gòu)造過程其實母親和女兒的這段對話就是一個是否見面的不斷決策的過程,圖7-1所示更加直觀地給出了決策過程。7.2決策樹構(gòu)造過程我們可以將以上相親對話過程表示成表7-1所示的相親對象樣本數(shù)據(jù),利用決策樹算法學(xué)習(xí)一棵能預(yù)測是否見面的決策樹。7.2決策樹構(gòu)造過程由于只有“見面”和“不見面”兩種可能,因此,K=2。在決策樹學(xué)習(xí)開始時,根結(jié)點包含D中的所有樣例,其中,正例占,負(fù)例占,根據(jù)公式7-1可得到根結(jié)點的信息熵為:經(jīng)過對“年齡”劃分后2個分支結(jié)點的信息熵為:7.2決策樹構(gòu)造過程根據(jù)公式7-2可得到屬性為“年齡”的信息增益為:圖7-2給出了基于“年齡”對根結(jié)點進行劃分的結(jié)果。7.2決策樹構(gòu)造過程利用決策樹算法繼續(xù)對每個分支結(jié)點做進一步劃分,重復(fù)執(zhí)行類似的操作,可以得到?jīng)Q策樹如圖7-3所示。7.3決策樹學(xué)習(xí)算法思想及實現(xiàn)ID3決策樹學(xué)習(xí)算法步驟描述如下:對當(dāng)前樣例集合,計算每個屬性的信息增益。選擇信息增益最大的屬性fi進行劃分。把在fi處取值相同的樣例劃歸為同一子集。若子集只含有單個屬性,則分支為葉子結(jié)點,標(biāo)記屬性值的類別。對每個子集重復(fù)執(zhí)行步驟(1)~(4),直到遞歸調(diào)用結(jié)束。7.3決策樹學(xué)習(xí)算法思想及實現(xiàn)1加載數(shù)據(jù)集defload_data(file_name):f=open(file_name,'r',encoding="utf-8")all_data=f.readlines()#讀取數(shù)據(jù)

attr_name=all_data[0].strip().split('\t')#拆分表頭得到各屬性的名稱

print(attr_name)attr_name=attr_name[0:-1]data_set=[]forrow_datainall_data[1:]:row_data=row_data.strip().split('\t')#以退格鍵為分隔符拆分每一行

data_set.append(row_data)returndata_set,attr_name7.3決策樹學(xué)習(xí)算法思想及實現(xiàn)計算信息熵defget_entropy(dataset):category={}forfindataset:label=f[-1]iflabelnotincategory:category[label]=0category[label]+=1n=len(dataset)entropy=0foriincategory:prob=float(category[i])/nentropy-=prob*log(prob,2)returnentropy27.3決策樹學(xué)習(xí)算法思想及實現(xiàn)3尋找最優(yōu)屬性劃分foriinrange(attr_num-1):feature_value=[p[i]forpindata_set] #取出每個屬性的所有值

feature=set(feature_value) #每個屬性對應(yīng)的值forvinfeature:subset=split_dataset(dataset,i,v)entropy=get_entropy(subset)#取出每個屬性的信息熵

prob=len(subset)/float(len(data_set))attr_entropy+=prob*entropyinfo_gain=example_entropy-attr_entropyifinfo_gain>max_info_gain:max_info_gain=info_gainmax_feature_index=ireturnmax_feature_index7.3決策樹學(xué)習(xí)算法思想及實現(xiàn)4構(gòu)造決策樹data_label=[data[-1]fordataindata_train]data_label_set=list(set(data_label))best_feature=choose_best_split(data_train)best_fea_label=labels[best_feature]decision_tree={best_fea_label:{}}labels.remove(labels[best_feature])feature_value=[data[best_feature]fordataindata_train]feature_set=set(feature_value)forfinfeature_set:sub_label_set=labels[:]decision_tree[best_fea_label][f]=create_decmaking_tree(split_dataset(data_train,best_feature,f),sub_label_set)returndecision_tree7.4決策樹算法實現(xiàn)─泰坦尼克號幸存者預(yù)測1泰坦尼克號數(shù)據(jù)集包含train.csv和test.csv兩個數(shù)據(jù)集,其中:

train.csv是訓(xùn)練數(shù)據(jù)集,包含特征信息和存活與否的標(biāo)簽。

test.csv是測試數(shù)據(jù)集,僅包含特征信息。查看樣本數(shù)據(jù)train=pd.read_csv('train.csv')pd.set_option('display.max_columns',10)#給最大列設(shè)置為10列print(train.head(5))print(())7.4決策樹算法實現(xiàn)─泰坦尼克號幸存者預(yù)測2數(shù)據(jù)清洗Age、Cabin、Embarked字段存在缺失值,且缺失值不是太多。X['Age'].fillna(X['Age'].mean(),inplace=True)print(X.info())7.4決策樹算法實現(xiàn)─泰坦尼克號幸存者預(yù)測3特征選擇通過數(shù)據(jù)探索,我們可以發(fā)現(xiàn)PassengerId、Name字段對分類意義不大,Cabin缺失值太多,Ticket毫無規(guī)律,可以舍棄。X_data=train[['Pclass','Sex','Age','SibSp','Parch','Fare','Embarked']]y_label=train['Survived']7.4決策樹算法實現(xiàn)─泰坦尼克號幸存者預(yù)測4#將數(shù)據(jù)集分隔為訓(xùn)練集和測試集X_train,X_test,y_train,y_test=train_test_split(X_data,y_label,test_size=0.25)dict=DictVectorizer(sparse=False)X_train=dict.fit_transform(X_train.to_dict(orient="records"))X_test=dict.transform(X_test.to_dict(orient="records"))7.4決策樹算法實現(xiàn)─泰坦尼克號幸存者預(yù)測5模型預(yù)測與評估使用訓(xùn)練好的決策樹模型在X_test上進行預(yù)測。#預(yù)測準(zhǔn)確率print(decision_model.predict(X_test))print("預(yù)測準(zhǔn)確率:",decision_model.score(X_test,y_test))輸出結(jié)果如下:預(yù)測的準(zhǔn)確率:0.730941

溫馨提示

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

最新文檔

評論

0/150

提交評論