python随机森林库_随机森林算法入门(python)
目錄
1 什么是隨機(jī)森林
1.1 集成學(xué)習(xí)
1.2 隨機(jī)決策樹
1.3 隨機(jī)森林
1.4 投票
2 為什么要用它
3 使用方法
3.1 變量選擇
3.2 分類
3.3 回歸
4 一個(gè)簡(jiǎn)單的Python示例
結(jié)語(yǔ)
前言:?隨機(jī)森林是一個(gè)非常靈活的機(jī)器學(xué)習(xí)方法,從市場(chǎng)營(yíng)銷到醫(yī)療保險(xiǎn)有著眾多的應(yīng)用。它可以用于市場(chǎng)營(yíng)銷對(duì)客戶獲取和存留建?;蝾A(yù)測(cè)病人的疾病風(fēng)險(xiǎn)和易感性。
隨機(jī)森林能夠用于分類和回歸問題,可以處理大量特征,并能夠幫助估計(jì)用于建模數(shù)據(jù)變量的重要性。
這篇文章是關(guān)于如何使用Python構(gòu)建隨機(jī)森林模型。
1 什么是隨機(jī)森林
隨機(jī)森林可以用于幾乎任何一種預(yù)測(cè)問題(包括非線性問題)。它是一個(gè)相對(duì)較新的機(jī)器學(xué)習(xí)策略(90年代誕生于貝爾實(shí)驗(yàn)室)可以用在任何方面。它屬于機(jī)器學(xué)習(xí)中的集成學(xué)習(xí)這一大類。
1.1 集成學(xué)習(xí)
集成學(xué)習(xí)是將多個(gè)模型進(jìn)行組合來解決單一的預(yù)測(cè)問題。它的原理是生成多個(gè)分類器模型,各自獨(dú)立地學(xué)習(xí)并作出預(yù)測(cè)。這些預(yù)測(cè)最后結(jié)合起來得到預(yù)測(cè)結(jié)果,因此和單獨(dú)分類器的結(jié)果相比,結(jié)果一樣或更好。
隨機(jī)森林是集成學(xué)習(xí)的一個(gè)分支,因?yàn)樗揽坑跊Q策樹的集成。
1.2 隨機(jī)決策樹
我們知道隨機(jī)森林是將其他的模型進(jìn)行聚合, 但具體是哪種模型呢?從其名稱也可以看出,隨機(jī)森林聚合的是分類(或回歸) 樹。一顆決策樹是由一系列的決策組合而成的,可用于數(shù)據(jù)集的觀測(cè)值進(jìn)行分類 。
1.3 隨機(jī)森林
引入的隨機(jī)森林算法將自動(dòng)創(chuàng)建隨機(jī)決策樹群。由于這些樹是隨機(jī)生成的,大部分的樹(甚至 99.9%)對(duì)解決你的分類或回歸問題是沒有有意義。
1.4 投票
那么,生成甚至上萬(wàn)的糟糕的模型有什么好處呢?好吧,這確實(shí)沒有。但有用的是,少數(shù)非常好的決策樹也隨之一起生成了。
當(dāng)你要做預(yù)測(cè)的時(shí)候,新的觀察值隨著決策樹自上而下走下來并被賦予一個(gè)預(yù)測(cè)值或標(biāo)簽。一旦森林中的每棵樹都給有了預(yù)測(cè)值或標(biāo)簽,所有的預(yù)測(cè)結(jié)果將被歸總到一起,所有樹的投票返回做為最終的預(yù)測(cè)結(jié)果。
簡(jiǎn)單來說,99.9%不相關(guān)的樹做出的預(yù)測(cè)結(jié)果涵蓋所有的情況,這些預(yù)測(cè)結(jié)果將會(huì)彼此抵消。少數(shù)優(yōu)秀的樹的預(yù)測(cè)結(jié)果將會(huì)脫穎而出,從而得到一個(gè)好的預(yù)測(cè)結(jié)果。
2 為什么要用它
隨機(jī)森林是機(jī)器學(xué)習(xí)方法中的Leatherman(多功能折疊刀)。你幾乎可以把任何東西扔給它。它在估計(jì)推斷映射方面做的特別好,從而不需要類似SVM醫(yī)一樣過多的調(diào)參(這點(diǎn)對(duì)時(shí)間緊迫的朋友非常好)。
2.1 一個(gè)映射的例子
隨機(jī)森林可以在未經(jīng)特意手工進(jìn)行數(shù)據(jù)變換的情況下學(xué)習(xí)。以函數(shù)f(x)=log(x)為例。
我們將在Yhat自己的交互環(huán)境Rodeo中利用Python生成分析數(shù)據(jù),你可以在here下載Rodeo的Mac,Windows和Linux的安裝文件。
首先,我們先生成一下數(shù)據(jù)并添加噪聲。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
importnumpyasnp
importpylabaspl
x=np.random.uniform(1,100,1000)
y=np.log(x)+np.random.normal(0,.3,1000)
pl.scatter(x,y,s=1,label="log(x) with noise")
pl.plot(np.arange(1,100),np.log(np.arange(1,100)),c="b",label="log(x) true function")
pl.xlabel("x")
pl.ylabel("f(x) = log(x)")
pl.legend(loc="best")
pl.title("A Basic Log Function")
pl.show()
得到如下結(jié)果:
如果我們建立了一個(gè)基本的線性模型通過使用x來預(yù)測(cè)y,我們需要作一條直線,一定成都市算是平分log(x)函數(shù)。而如果我們使用隨機(jī)森林算法,它可以更好的逼近log(x)曲線從而使得它看起來更像實(shí)際的函數(shù)。
當(dāng)然,你也可以說隨機(jī)森林對(duì)log(x)函數(shù)有點(diǎn)過擬合。不管怎么樣,這說明了隨機(jī)森林并不限于線性問題。
3 使用方法
3.1 特征選擇
隨機(jī)森林的一個(gè)最好用例是特征選擇。嘗試很多個(gè)決策樹變量的一個(gè)副產(chǎn)品就是,你可以檢查變量在每棵樹中表現(xiàn)的是最佳還是最糟糕。
當(dāng)一些樹使用一個(gè)變量,而其他的不使用這個(gè)變量,你就可以對(duì)比信息的丟失或增加。實(shí)現(xiàn)的比較好的隨機(jī)森林工具能夠?yàn)槟阕鲞@些事情,所以你需要做的僅僅是去查看那個(gè)方法或參數(shù)。
在下述的例子中,我們嘗試弄明白區(qū)分紅酒或白酒時(shí),哪些變量是最重要的。
3.2 分類
隨機(jī)森林也很善長(zhǎng)分類問題。它可以被用于為多個(gè)可能目標(biāo)類別做預(yù)測(cè),它也可以在調(diào)整后輸出概率。你需要注意的一件事情是過擬合。
隨機(jī)森林容易產(chǎn)生過擬合,特別是在數(shù)據(jù)集相對(duì)小的時(shí)候。當(dāng)你的模型對(duì)于測(cè)試集合做出“太好”的預(yù)測(cè)的時(shí)候就應(yīng)該懷疑一下了。避免過擬合的一個(gè)方法是在模型中只使用有相關(guān)性的特征,比如使用之前提到的特征選擇。
3.3 回歸
隨機(jī)森林也可以用于回歸問題。
我發(fā)現(xiàn),不像其他的方法,隨機(jī)森林非常擅長(zhǎng)于分類變量或分類變量與連續(xù)變量混合的情況。
4 一個(gè)簡(jiǎn)單的Python示例
1
2
3
4
5
6
7
8
fromsklearn.datasetsimportload_iris
fromsklearn.ensembleimportRandomForestClassifier
importpandasaspd
importnumpyasnp
iris=load_iris()
df=pd.DataFrame(iris.data,columns=iris.feature_names)
df['is_train']=np.random.uniform(0,1,len(df))
下面就是你應(yīng)該看到的結(jié)果了。由于我們隨機(jī)選擇數(shù)據(jù),所以實(shí)際結(jié)果每次都會(huì)不一樣。
preds
sertosa
versicolor
virginica
actual
sertosa
6
0
0
versicolor
0
16
1
virginica
0
0
12
總結(jié)
以上是生活随笔為你收集整理的python随机森林库_随机森林算法入门(python)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue项目上线后刷新报错404问题(ap
- 下一篇: 工作岗位类别答疑