機器學習 7 決策樹與隨機森林

2021-09-03 08:53:47 字數 3578 閱讀 2384

如上圖所示,這就是一棵決策樹。

-決策樹的劃分依據-資訊增益

資訊增益表示,得知特徵x的資訊而使得類y的資訊的不確定性減少的程度。資訊熵越小,資訊增益越大,減少的不確定性越大。

公式如下(理解即可):

通過乙個例子計算一下,如下圖一些特徵(年齡、有工作、房子、信貸),目標(類別即是否放貸):

h(d)為總的經驗熵(根據目標值計算):

決策樹對鐵達尼號進行**生死

:return:none

'''# 獲取資料

titan = pd.read_csv(

"")# 處理資料,找出特徵值和目標值

x = titan[

['pclass'

,'age'

,'***']]

y = titan[

'survived'

]# 缺失值處理

x['age'

].fillna(x[

'age'

].mean(

),inplace=

true

)#分割資料集

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=

0.25

)# 進行處理(特徵工程)

dict

= dictvectorizer(sparse=

false

) x_train =

dict

.fit_transform(x_train.to_dict(orient=

"records"))

# 轉換字典,orient引數是制定乙個樣本轉為乙個字典

x_test =

dict

.transform(x_test.to_dict(orient=

"records"))

# 決策樹進行**

dec = decisiontreeclassifier(

) dec.fit(x_train, y_train)

print

("準確率:"

, dec.score(x_test, y_test)

)return

none

if __name__ ==

'__main__'

: decision(

)

import pandas as pd

from sklearn.tree import decisiontreeclassifier

from sklearn.model_selection import train_test_split

from sklearn.feature_extraction import dictvectorizer

from sklearn.ensemble import randomforestclassifier

from sklearn.model_selection import gridsearchcv

defdecision()

:'''

決策樹對鐵達尼號進行**生死

:return:none

'''# 獲取資料

titan = pd.read_csv(

"")# 處理資料,找出特徵值和目標值

x = titan[

['pclass'

,'age'

,'***']]

y = titan[

'survived'

]# 缺失值處理

x['age'

].fillna(x[

'age'

].mean(

),inplace=

true

)#分割資料集

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=

0.25

)# 進行處理(特徵工程)

dict

= dictvectorizer(sparse=

false

) x_train =

dict

.fit_transform(x_train.to_dict(orient=

"records"))

# 轉換字典,orient引數是制定乙個樣本轉為乙個字典

x_test =

dict

.transform(x_test.to_dict(orient=

"records"))

# 決策樹進行**

# dec = decisiontreeclassifier()

# dec.fit(x_train, y_train)

# print("準確率:", dec.score(x_test, y_test))

# 隨機森林進行**(超引數調優)

rf = randomforestclassifier(

) param =

# 網格搜尋與交叉驗證

gc = gridsearchcv(rf, param_grid=param, cv=2)

#此處演示為了節約時間cv取2組了

gc.fit(x_train, y_train)

print

("準確率:"

, gc.score(x_test, y_test)

)print

("選擇的引數模型:"

, gc.best_params_)

return

none

if __name__ ==

'__main__'

: decision(

)

輸出:

準確率: 0.8601823708206687

選擇的引數模型:

在當前所有演算法中,具有極好的準確率。

能夠有效的執行在大資料集上。

能夠處理具有高緯特徵的輸入樣本,而且不需要降維。

能夠評估各個特徵在分類問題上的重要性。

機器學習 決策樹和隨機森林

熵 度量隨機變數的確定量 如果變數完全確定則是0,如果變數完全能不確定則是1 數學期望 mean 是試驗中每次可能結果的概率乘以其結果的總和,它反映隨機變數平均取值的大小 條件熵 在確定的乙個或多個條件下,確定另乙個資訊的熵 推導過程 相對熵 互相息 總結 相關熵 kl散度 可以度量兩個隨機變數之間...

機器學習 決策樹 隨機森林演算法

決策樹api from sklearn.tree import decisiontreeclassifier import pandas as pd 字典特徵抽取 from sklearn.feature extraction import dictvectorizer from sklearn.m...

機器學習之 決策樹 隨機森林

一 決策樹 選擇特徵來分割 分割方法 id3 c4.5 cart 1.id3 資訊增益來選擇最優分割 id3偏向取值較多的屬性,例如id列 2.c4.5 資訊增益率選擇最優分割 資訊增益 iv 屬性a的特徵個數越多,iv越大。資訊增益率又會偏向較少的特徵。c4.5先找出資訊增益高於平均水平的屬性,再...