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 資訊增益 當熵和條件熵中的概率由資料統計得...