05 分類演算法 決策樹 隨機森林

2021-09-29 11:31:56 字數 4363 閱讀 4542

32支球隊,log32=5位元

64支球隊,log64=6位元

資訊和消除不確定性是相聯絡的

id 	年齡 有工作 	有自己的房子 	信貨情況 	類別

1 青年 否 否 -般 否

2 青年 否 否 好 否

3 青年 是 否 好 是

4 青年 是 是 -般 是

5 青年 否 否 -般 否

6 中年 否 否 -般 否

7 中年 否 否 好 否

8 中年 是 是 好 是

9 中年 否 是 非常好 是

10 中年 否 是 非常好 是

11 老年 否 是 非常好 是

12 老年 否 是 好 是

13 老年 是 否 好 是

14 老年 是 否 非常好 是

15 老年 否 否 -般 否

同理其他的也可以計算出來,g(d,a2)=0.324,g(d,a3)=0.420,g(d,a4)=0.363,相比較來說其中特徵a3 (有自

己的房子)的資訊增益最大,所以我們選擇特徵a3為最有特徵

- class sklearn.tree.decisiontreeclassifier(criterion=』gini』,max_depth=none,random_state=none)

- 決策樹分類器

- criterion:預設是』gini』係數,也可以選擇資訊增益的熵』entropy』

- max_depth:樹的深度大小

- random_state:隨機數種子

- method:

- decision_path:返回決策樹的路徑

import pandas as pd

import numpy as np

from sklearn.feature_extraction import dictvectorizer

from sklearn.model_selection import train_test_split

from sklearn.tree import decisiontreeclassifier

# 讀取資料

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'))

x_test = dict.transform(x_test.to_dict(orient='records'))

print(dict.get_feature_names())

# 決策樹估計器流程

dec = decisiontreeclassifier(max_depth=5)

dec.fit(x_train, y_train)

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

安裝graphviz

執行命令

完整**

import pandas as pd

import numpy as np

from sklearn.feature_extraction import dictvectorizer

from sklearn.model_selection import train_test_split

from sklearn.tree import decisiontreeclassifier, export_graphviz

# 讀取資料

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'))

x_test = dict.transform(x_test.to_dict(orient='records'))

print(dict.get_feature_names())

# 決策樹估計器流程

dec = decisiontreeclassifier()

dec.fit(x_train, y_train)

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

# 匯出決策樹的結構

export_graphviz(dec, out_file="./tree.dot", feature_names=['年齡', '一等艙', '二等艙', '三等艙', '女性', '男性'])

缺點

改進 什麼是隨機森林

隨機森林的過程、優勢

隨機森林的優點

整合學習api

鐵達尼號乘客生存分類分析(網格搜尋與交叉驗證)

import pandas as pd

import numpy as np

from sklearn.feature_extraction import dictvectorizer

from sklearn.model_selection import train_test_split,gridsearchcv

from sklearn.tree import decisiontreeclassifier, export_graphviz

from sklearn.ensemble import randomforestclassifier

# 讀取資料

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'))

x_test = dict.transform(x_test.to_dict(orient='records'))

print(dict.get_feature_names())

# 隨機森林進行**(差引數優化)

rf = randomforestclassifier()

param =

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

gc.fit(x_train, y_train)

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

print("檢視選擇的引數模型:", gc.best_estimator_)

Python 分類演算法(決策樹,隨機森林)

資訊熵的計算 條件熵的計算 決策樹分類器 criterion 預設是 gini 係數,也可以選擇資訊增益的熵 entropy max depth 樹的深度大小 random state 隨機數種子 method decision path 返回決策樹的路徑 在機器學習中 隨機森林 是乙個包含多個決策...

決策樹與隨機森林演算法

決策樹 分類樹 是一種樹形結構,其中每個內部節點表示乙個屬性上的測試,每個分支代表乙個測試輸出,每個葉節點代表一種類別。決策樹只需要構建一次,每一次 分類的最大計算次數不超過決策樹的深度。決策樹學習演算法 id3演算法 通過自頂向下構造決策樹來進行學習,構造過程是從 選取分類能力最好的屬性作為根節點...

決策樹和隨機森林

決策樹 建立決策樹的關鍵,是在當前狀態下選擇那個屬性作為分類依據。根據不同的目標函式,建立決策樹主要有三個演算法 id3 iterative dichotomiser c4.5 cart classification and regression tree 資訊增益 當熵和條件熵中的概率由資料統計得...