# 決策樹api
from sklearn.tree import decisiontreeclassifier
import pandas as pd
# 字典特徵抽取
from sklearn.feature_extraction import dictvectorizer
from sklearn.model_selection import train_test_split
# 到處dot檔案 進行樹的視覺化
from sklearn.tree import export_graphviz
# 使用決策樹**鐵達尼號 存活
# titan = pd.read_csv("")
# print(titan)
titan = pd.read_csv("./data/tank_survive/train.txt")
# 處理資料
# 找出特徵值 目標值
# 特徵值
x = titan[['pclass', 'age', '***']]
# 目標值
y = titan['survived']
# age有缺失值 要進行處理 按照列的平均值填充
# inplace 表示進行替換
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)
# 進行處理 特徵工程 進行onehot編碼
dict = dictvectorizer(sparse=false)
# to_dict 方法可以將資料轉化為字典格式 oriend引數指明按照行進行轉化
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())
print(x_train)
print("***" * 20)
print(x_test)
# 用決策樹進行**
# max_depth 樹的最大深度
dec = decisiontreeclassifier(max_depth=5)
dec.fit(x_train, y_train)
print(dec.score(x_test, y_test))
export_graphviz(dec, "./tree.dot", feature_names=['年齡', 'pclass=1st', 'pclass=2nd', 'pclass=3rd', '女性', '男性'])
# 決策樹api
from sklearn.tree import decisiontreeclassifier
import pandas as pd
# 字典特徵抽取
from sklearn.feature_extraction import dictvectorizer
from sklearn.model_selection import train_test_split
# 到處dot檔案 進行樹的視覺化
from sklearn.tree import export_graphviz
# 隨機森林
from sklearn.ensemble import randomforestclassifier
# 網格搜尋拍 交叉驗證
from sklearn.model_selection import gridsearchcv
# 使用決策樹**鐵達尼號 存活
titan = pd.read_csv("")
# print(titan)
# titan = pd.read_csv("./data/tank_survive/train.txt")
# 處理資料
# 找出特徵值 目標值
# 特徵值
x = titan[['pclass', 'age', '***']]
# 目標值
y = titan['survived']
# age有缺失值 要進行處理 按照列的平均值填充
# inplace 表示進行替換
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)
# 進行處理 特徵工程 進行onehot編碼
dict = dictvectorizer(sparse=false)
# to_dict 方法可以將資料轉化為字典格式 oriend引數指明按照行進行轉化
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())
print(x_train)
print("***" * 20)
print(x_test)
# 使用隨機森林進行**
rf = randomforestclassifier()
# 網格搜尋 交叉驗證
# 引數說明
# n_estimators 隨機森林的樹的數目
# max_depth 樹的最大深度
param =
gc = gridsearchcv(rf, param_grid=param,cv=2)
gc.fit(x_train,y_train)
print("準確率為:",gc.score(x_test,y_test))
print("選擇的引數模型:",gc.best_estimator_)
機器學習 決策樹和隨機森林
熵 度量隨機變數的確定量 如果變數完全確定則是0,如果變數完全能不確定則是1 數學期望 mean 是試驗中每次可能結果的概率乘以其結果的總和,它反映隨機變數平均取值的大小 條件熵 在確定的乙個或多個條件下,確定另乙個資訊的熵 推導過程 相對熵 互相息 總結 相關熵 kl散度 可以度量兩個隨機變數之間...
機器學習之 決策樹 隨機森林
一 決策樹 選擇特徵來分割 分割方法 id3 c4.5 cart 1.id3 資訊增益來選擇最優分割 id3偏向取值較多的屬性,例如id列 2.c4.5 資訊增益率選擇最優分割 資訊增益 iv 屬性a的特徵個數越多,iv越大。資訊增益率又會偏向較少的特徵。c4.5先找出資訊增益高於平均水平的屬性,再...
機器學習04 決策樹 隨機森林
定義 h的專業術語稱之為資訊熵,單位為位元。總結 資訊和消除不確定性是相聯絡的 定義與公式 特徵a對訓練資料集d的資訊增益g d,a 定義為集合d的資訊熵h d 與特徵a給定條件下d的資訊條件熵h d a 之差,即公式為 資訊增益表示得知特徵x的資訊而息的不確定性減少的程度使得類y的資訊熵減少的程度...