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

2021-09-05 08:49:10 字數 3114 閱讀 4948

# 決策樹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的資訊熵減少的程度...