bootstrap:一種有放回的抽樣方法。
bagging( bootstrap aggregation)的策略:從樣本集中進行有放回地選出n個樣本;在樣本的所有特徵上,對這n個樣本建立分類器;重複上述兩步m次,獲得m個樣本分類器;最後將測試資料都放在這m個樣本分類器上,最終得到m個分類結果,再從這m個分類結果中決定資料屬於哪一類(多數投票制)。
隨機森林採用了bagging策略,且在其基礎上進行了一些修改,採用了兩個隨機:
從訓練樣本集中使用bootstrap取樣(隨機有放回)選出n個樣本。
設樣本共有b個特徵,從這b個特徵中只隨機選擇k個特徵來分割樣本,通過計算選擇最優劃分特徵作為節點來劃分樣本集合來建立決策樹。(與bagging的不同之處:沒有使用全部的特徵,這樣可以避免一些過擬合的特徵,不再對決策樹進行任何剪枝)
重複以上兩步m次,可建立m棵決策樹
這m棵決策樹形成了森林,可通過簡單多數投票法(或其他投票機制)來決定森林的輸出,決定屬於哪一型別。(針對解決回歸問題,可以採用單棵樹輸出結果總和的平均值)
隨機森林在一定程式上提高了泛化能力,而且可以並行地生成單棵樹。
import numpy asnpimport matplotlib.pyplot
asplt
from
sklearn.tree import decisiontreeregressor
if __name__ == "
__main__":
n = 500
x = np.random.rand(n) * 8 - 3
x.sort()
y = np.cos(x) + np.sin(x) + np.random.randn(n) * 0.4
x = x.reshape(-1, 1
) reg = decisiontreeregressor(criterion='
mse'
) # reg1 = randomforestregressor(criterion='
mse'
) dt =reg.fit(x, y)
# dt1 =reg1.fit(x, y)
x_test = np.linspace(-3, 5, 100).reshape(-1, 1
) y_hat =dt.predict(x_test)
plt.figure(facecolor="w"
) plt.plot(x, y, 'ro
', label="
actual")
plt.plot(x_test, y_hat, 'k*
', label="
predict")
plt.legend(loc="
best")
plt.title(u
'decision tree
', fontsize=17
) plt.tight_layout()
plt.grid()
plt.show()
機器學習 TensorFlow安裝
環境準備 centos 7 python 2.7 root master uname a linux master 3.10.0 229.el7.x86 64 1 smp fri mar 6 11 36 42 utc 2015 x86 64 x86 64 x86 64 gnu linux root ...
機器學習筆記 TensorFlow
構建乙個簡單的 tensorflow 程式,使用該程式繪製乙個預設圖並建立乙個執行該圖的會話 tensorflow 的名稱源自張量,張量是任意維度的陣列。借助 tensorflow,您可以操控具有大量維度的張量。即便如此,在大多數情況下,您會使用以下乙個或多個低維張量 tensorflow指令會建立...
機器學習 TensorFlow初學
dot 陣列的點積 dot producta np.arange 0,9 out 45 array 0,1,2,3,4,5,6,7,8 b a 1 out 47 array 8,7,6,5,4,3,2,1,0 np.dot a,b out 48 84隨機數生成 這幾個都是用於生成隨機數tensor的...