python實現決策樹的儲存和呼叫

2021-10-09 17:46:53 字數 1913 閱讀 9985

總目錄:python資料分析整理

本文資料以及大部分**來自《機器學習實戰》

機器學習實戰

前面講到將訓練的決策樹繪製成簡單易懂的,

trees.py下的**

def

classify

(inputtree, featlabels, testvec)

:print

(featlabels)

firststr =

list

(inputtree.keys())

[0] seconddict = inputtree[firststr]

print

(firststr)

print

(featlabels)

featindex = featlabels.index(firststr)

key = testvec[featindex]

valueoffeat = seconddict[key]

ifisinstance

(valueoffeat,

dict):

classlabel = classify(valueoffeat, featlabels, testvec)

else

: classlabel = valueoffeat

return classlabel

defdumptree

(inputtree, filename)

:import pickle

fw =

open

(filename,

'wb'

) pickle.dump(inputtree, fw)

fw.close(

)def

loadtree

(filename)

:import pickle

fr =

open

(filename,

'rb'

)return pickle.load(fr)

測試**如下:

import pandas as pd

import numpy as np

import trees

from math import log

data_file = pd.read_csv(

'file.txt'

, sep=

'\t'

)data_file = data_file.iloc[:,

1:]a = data_file.values

b = a.tolist(

)the_label1 =

list

(data_file.keys()[

:-1]

)the_label2 =

list

(data_file.keys()[

:-1]

)mytree = trees.createtree(b, the_label1)

trees.dumptree(mytree,

'mytree'

)new_trees = trees.loadtree(

'mytree'

)print

(new_trees)

dd = trees.classify(new_trees, the_label2,

['l1'

,'r1'])

print

(dd)

之前的資料集和模型的訓練在上一張,不過有個問題,我也不知道the_label1為啥經過函式mytree = trees.createtree(b, the_label1)後值變了,我並沒有重新賦值給the_label1啊,沒有辦法,只好新建了個變數the_label2解決問題。

python實現決策樹和視覺化決策樹

一.python實現決策樹 from sklearn import tree from sklearn.datasets import load wine from sklearn.model selection import train test split 匯入資料集,這裡用的是自帶的酒的資料 ...

python實現決策樹

決策樹是乙個 模型 他代表的是物件屬性與物件值之間的一種對映關係。樹中每個節點表示某個物件,而每個分叉路徑則代表某個可能的屬性值,而每個葉節點則對應從根節點到該葉節點所經歷的路徑所表示的物件的值。詳細關於決策樹的討論,請自行google。一 找到最優分割位置 1 針對樣本資料,需要在其不同的維度 d...

決策樹和CART決策樹

首先簡單介紹下決策樹 說到決策樹肯定離不開資訊熵 什麼是資訊熵 不要被這名字唬住,其實很簡單 乙個不太可能的時間居然發生了,要比乙個非常可能的時間發生提供更多的資訊。訊息說 今天早上太陽公升起 資訊量是很少的,以至於沒有必要傳送。但另一條訊息說 今天早上日食 資訊量就很豐富。概率越大資訊量就越少,與...