機器學習day03

2021-09-16 13:19:22 字數 3332 閱讀 8340

資訊理論基礎(熵 聯合熵 條件熵 資訊增益 基尼不純度)

資訊熵:資訊熵是度量樣本集合純度常用的一種指標。定義為:

聯合熵:聯合熵就是度量乙個聯合分布的隨機系統的不確定度

條件熵:在得知某一確定資訊的基礎上獲取另外乙個資訊時所獲得的資訊量。

資訊增益:資訊增益代表使用屬性a帶來的純度提公升,資訊增益越大,帶來的純度提公升越大。計算公式就是父節點的資訊熵減去所有子節點的資訊熵。

基尼不純度:從乙個資料集中隨機選取子項,度量其被錯誤的劃分到其他組裡的概率。

2.決策樹的不同分類演算法(id3演算法、c4.5、cart分類樹)的原理及應用場景

決策樹的基本步驟:特徵選擇,決策樹生成,決策樹剪枝。

決策樹生成的過程就是將資料集不斷劃分成為純度更高,不確定更小的子集的過程。

id3演算法:id3的演算法計算的是資訊增益,缺點是喜歡選擇選項多的特徵

c4.5演算法:在id3的基礎熵增加資訊增益率,採用了悲觀剪枝,採用了離散化處理連續屬性,處理缺失值

cart:採用基尼係數劃分資料,同時決定改特徵的最優二值切分點,可針對離散和連續型,可以做分類和回歸。

回歸樹原理

將資料和屬性向純度高的方向進行分類

決策樹防止過擬合手段

剪枝是對付過擬合的主要手段,基本策略有「預剪枝」和「後剪枝」,預剪枝是說在決策樹生成的過程中對這個節點進行估計,如果不能提公升泛化能力就停止劃分節點。後剪枝是從訓練集中生成一顆完整的決策樹,自底向上的進行考察如果子樹變成子節點可以帶來泛化能力的提公升的話,那就將子樹替換成為子節點。

模型評估

回歸參照線性回歸評價指標,分類參照logistic評價指標

sklearn引數詳解,python繪製決策樹

sklearn詳解

from sklearn import tree

mode = tree.decisiontreeclassifier(criterion=『gini』)

mode.fit(x,y)

y_test = mode.predict(x_test)

其中對於函式 tree.decisiontreeclassifier()中的具體引數

class sklearn.tree.decisiontreeclassifier(criterion=『gini』, splitter=『best』, max_depth=none, min_samples_split=2,min_samples_leaf =1, min_weight_fraction_leaf=0.0, max_features=none, random_state=none, max_leaf_nodes=none,class_weight=none, presort=false)

criterion:string型別,可選(預設為"gini")

衡量分類的質量。支援的標準有"gini"代表的是gini impurity(不純度)與"entropy"代表的是information gain(資訊增益)。

splitter:string型別,可選(預設為"best")

一種用來在節點中選擇分類的策略。支援的策略有"best",選擇最好的分類,"random"選擇最好的隨機分類。

max_features:int,float,string or none 可選(預設為none)

在進行分類時需要考慮的特徵數。

1.如果是int,在每次分類是都要考慮max_features個特徵。

2.如果是float,那麼max_features是乙個百分率並且分類時需要考慮的特徵數是int(max_features*n_features,其中n_features是訓練完成時發特徵數)。

3.如果是auto,max_features=sqrt(n_features)

4.如果是sqrt,max_features=sqrt(n_features)

5.如果是log2,max_features=log2(n_features)

6.如果是none,max_features=n_features

注意:至少找到乙個樣本點有效的被分類時,搜尋分類才會停止。

max_depth:int or none,可選(預設為"none")

表示樹的最大深度。如果是"none",則節點會一直擴充套件直到所有的葉子都是純的或者所有的葉子節點都包含少於min_samples_split個樣本點。忽視max_leaf_nodes是不是為none。

min_samples_split:int,float,可選(預設為2)

區分乙個內部節點需要的最少的樣本數。

1.如果是int,將其最為最小的樣本數。

2.如果是float,min_samples_split是乙個百分率並且ceil(min_samples_split*n_samples)是每個分類需要的樣本數。ceil是取大於或等於指定表示式的最小整數。

min_samples_leaf:int,float,可選(預設為1)

乙個葉節點所需要的最小樣本數:

1.如果是int,則其為最小樣本數

2.如果是float,則它是乙個百分率並且ceil(min_samples_leaf*n_samples)是每個節點所需的樣本數。

min_weight_fraction_leaf:float,可選(預設為0)

乙個葉節點的輸入樣本所需要的最小的加權分數。

max_leaf_nodes:int,none 可選(預設為none)

在最優方法中使用max_leaf_nodes構建乙個樹。最好的節點是在雜質相對減少。如果是none則對葉節點的數目沒有限制。如果不是none則不考慮max_depth.

class_weight:dict,list of dicts,「banlanced」 or none,可選(預設為none)

表示在表中的類的關聯權值。如果沒有指定,所有類的權值都為1。對於多輸出問題,一列字典的順序可以與一列y的次序相同。

"balanced"模型使用y的值去自動適應權值,並且是以輸入資料中類的頻率的反比例。如:n_samples/(n_classes*np.bincount(y))。

對於多輸出,每列y的權值都會想乘。

如果sample_weight已經指定了,這些權值將於samples以合適的方法相乘。

random_state:int,randomstate instance or none

如果是int,random_state 是隨機數字發生器的種子;如果是randomstate,random_state是隨機數字發生器,如果是none,隨機數字發生器是np.random使用的randomstate instance.

persort:bool,可選(預設為false)

是否預分類資料以加速訓練時最好分類的查詢。在有大資料集的決策樹中,如果設為true可能會減慢訓練的過程。當使用乙個小資料集或者乙個深度受限的決策樹中,可以減速訓練的過程。

機器學習Day 03

給定乙個由d個 屬性描述 的示例x x1 x2,xd 其中xi 是x在第 i個屬性 上的取值 線性模型 linear model 試圖學得乙個通過屬性的現實組合來進行 的函式,即 f x w 1x1 w2x2 wdx d b 一般用向量形式寫成 f x w tx b 其中w w1,w2,w d w ...

前端學習day03

今天學了個新東西,是根據螢幕寬度大小修改網頁顯示的內容。大概查了下用法,media 可以針對不同的螢幕尺寸設定不同的樣式,特別是如果你需要設定設計響應式的頁面,media 是非常有用的。當你重置瀏覽器大小的過程中,頁面也會根據瀏覽器的寬度和高度重新渲染頁面。這個有時有效,有時會失效,具體是看電腦解析...

學習筆記day03

邏輯運算子 異或 符號兩邊結果相同,結果為false 符號兩邊結果不同,結果為true 面試題1,雙與 也叫短路運算,因為左側如果為假的話直接不判斷右側結果 與 c無論左邊結果運算是什麼,右邊都參與運算。2,雙或 和或 運算結果一樣,但是運算過程有點小區別。無論左邊運算結果是什麼,右邊都參與運算 當...