1. 程式人生 > >python機器學習庫scikit-learn簡明教程之:隨機森林

python機器學習庫scikit-learn簡明教程之:隨機森林

1.scikit-learn中的隨機森林

sklearn.ensemble模組中包含兩種基於隨機決策樹的平均演算法:隨機森林演算法和ExtraTrees的方法。這兩種演算法都是專為決策樹設計的包含混合擾動技術的演算法。這意味著分類器依賴著引入隨機性來進行建模。整體的預測結果,來自各個獨立分類器的綜合平均預測結果。

原理:隨機森林,顧名思義,就是用隨機的方式建立一個森林,森林裡面有很多的決策樹組成,隨機森林的每一棵決策樹之間是獨立沒有關聯的。在得到森林之後,當有一個新的輸入樣本進入的時候,就讓森林中的每一棵決策樹分別進行一下判斷,看看這個樣本應該屬於哪一類,然後看看哪一類被選擇最多,就預測這個樣本為那一類。

2.隨機森林演算法quick-start程式碼

#gnu
>>> from sklearn.ensemble import RandomForestClassifier
>>> X = [[0, 0], [1, 1]]
>>> Y = [0, 1]
>>> clf = RandomForestClassifier(n_estimators=10)
>>> clf = clf.fit(X, Y)
#gnu

在這裡,我們建立了一個極其簡單的classifer(分類器);如決策樹問題一樣,隨機森林的決策樹也可以擴充套件到多輸出問題(如果Y是[ n_samples,n_outputs ]形態規模的陣列)。

3.進階:極端隨機樹:Extremely randomized trees

ET或Extra-Trees(Extremely randomized trees,極端隨機樹)是由PierreGeurts等人於2006年提出。該演算法與隨機森林演算法十分相似,都是由許多決策樹構成。但該演算法與隨機森林有兩點主要的區別:

1、隨機森林應用的是Bagging模型,而ET是使用所有的訓練樣本得到每棵決策樹,也就是每棵決策樹應用的是相同的全部訓練樣本;

2、隨機森林是在一個隨機子集內得到最佳分叉屬性,而ET是完全隨機的得到分叉值,從而實現對決策樹進行分叉的。

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
...     random_state=0)
#在這裡我們先引入一些訓練資料集

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
...     random_state=0)
#定義一個決策樹分類器
>>> scores = cross_val_score(clf, X, y)
>>> scores.mean()                             
0.97...
#這裡是決策樹的模型精準度得分

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
...     min_samples_split=2, random_state=0)
#定義一個隨機森林分類器
>>> scores = cross_val_score(clf, X, y)
>>> scores.mean()                             
0.999...
#這裡是隨機森林訓練器的模型精確度得分

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
...     min_samples_split=2, random_state=0)
#定義一個極端森林分類器
>>> scores = cross_val_score(clf, X, y)
>>> scores.mean() > 0.999
True
#這裡是極端森林訓練器的模型精確度得分,效果優於隨機森林

演算法結果比較(新增AdaBoost演算法)  


相較於神經網路(更加複雜更加精準,但是速度更慢,計算量很大,不容易構建),隨機森林演算法還很年輕,有的場合使用,更加快速高效;(我們的訓練資料集資料及其規整乾淨理想,所以才能達到如此高的精確度,現實中是會打折扣的);

相關推薦

python機器學習scikit-learn簡明教程隨機森林

1.scikit-learn中的隨機森林 sklearn.ensemble模組中包含兩種基於隨機決策樹的平均演算法:隨機森林演算法和ExtraTrees的方法。這兩種演算法都是專為決策樹設計的包含混合

python機器學習scikit-learn簡明教程SVM支援向量機

1.獲得樣例資料 scikit-learn庫有一些標準的資料集,例如分類的數字集,波士頓房價迴歸資料集。 在下面,我們啟動Python直譯器,然後載入資料集。我們可以認為,美元符號後輸入python然

python機器學習scikit-learn簡明教程AdaBoost演算法

1.AdaBoost簡介及原理 Adaboost是一種迭代演算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然後把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。 Adab

Python機器學習scikit-learn實踐

.get new 安裝 gis 支持 兩個 clas mod 神經網絡 一、概述 機器學習算法在近幾年大數據點燃的熱火熏陶下已經變得被人所“熟知”,就算不懂得其中各算法理論,叫你喊上一兩個著名算法的名字,你也能昂首挺胸脫口而出。當然了,算法之林雖大,但能者還是

Python機器學習scikit-learn

概述 scikit-learn 是機器學習領域非常熱門的一個開源庫,基於Python 語言寫成。可以免費使用。 而且使用非常的簡單,文件感人,非常值得去學習。 下面是一張scikit-learn的圖譜: 我們可以看到,機器學習分為四大塊,分別是 cla

Python機器學習scikit-learn、繪相簿Matplotlib的安裝

在windows環境下安裝scipy和sklearn是一件比較麻煩的事情。由於sklearn依賴於numpy和scipy,所以安裝sklearn之前需要先安裝numpy和scipy庫,然而使用pip安裝安裝時,pip install numpy 可以安裝成功,但是使用命令p

機器學習利器——Scikit-learn的安裝

c++ 找到 ear html 實驗室 簡單的 安裝 網站 .com 機器學習利器——Scikit-learn的安裝  由於筆者最近在進行畢業論文的準備,且畢業論文中需要用到Python版本的機器學習庫——scikit-learn。所以最近三天一直在Windows上部署這個

2018年最受歡迎Python機器學習介紹

Python Python開發 Python全棧 機器學習庫 Python是一種面向對象的解釋型計算機程序設計語言,具有豐富和強大的庫,再加上其簡單、易學、速度快、開源免費、可移植性、可擴展性以及面向對象的特點,Python成為2017年最受歡迎的最受歡迎的編程語言! 人工智能是當前最

比較好的Python機器學習有哪些?

Python是一種面向物件的解釋型計算機程式設計語言,具有豐富和強大的庫,再加上其簡單、易學、速度快、開源免費、可移植性、可擴充套件性以及面向物件的特點,Python成為2017年最受歡迎的最受歡迎的程式語言! 人工智慧是當前最熱門話題之一,機器學習技術是人工智慧實現必備技能,Python程式語

python機器學習——結巴中文分詞

結巴中文分詞 安裝: pip install jieba1 特點: 支援三種分詞模式: 精確模式,試圖將句子最精確地切開,適合文字分析; 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義; 搜尋引擎模式,在精確

阿里雲機器學習平臺PAI使用簡明教程

概述 阿里雲機器學習平臺是構建在阿里雲MaxCompute(原ODPS)計算平臺之上,集資料處理、建模、離線預測、線上預測為一體的機器學習平臺。很多使用者在初次使用PAI過程中因為對平臺比較陌生,總是會遇到這樣或那樣的困惑。本文以通用的機器學習流程為指導,結合PAI平臺逐一介紹資料準備、模型搭建與訓練

python機器學習的使用

常見機器學習演算法名單 1.線性迴歸 線性迴歸通常用於根據連續變數估計實際數值(房價、呼叫次數、總銷售額等)。我們通過擬合最佳直線來建立自變數和因變數的關係。這條最佳直線叫做迴歸線,並且用 Y= a *X + b 這條線性等式來表示。 理解線性迴歸的最好辦法是回顧一下童年。

Python機器學習sklearn裡利用感知機進行三分類(多分類)的原理

from IPython.display import Image %matplotlib inline # Added version check for recent scikit-learn 0.18 checks from distutils.vers

python機器學習sklearn——Lasso迴歸(L1正則化)

Lasso The Lasso 是估計稀疏係數的線性模型。 它在一些情況下是有用的,因為它傾向於使用具有較少引數值的情況,有效地減少給定解決方案所依賴變數的數量。 因此,Lasso 及其變體是壓縮感知領域的基礎。 在一定條件下,它可以恢復一組非零權重的

安裝機器學習框架scikit-learn

執行環境:windows 10+python3.6 Scikit-learn requires: Python (>= 2.7 or >= 3.4), NumPy (>= 1.8.2), SciPy (>= 0.13.3). C:\Windows\System32&g

python機器學習xgboost——xgboost演算法

安裝 更新:現在已經可以通過pip install xgboost線上安裝庫了。 xgboost簡介 xgboost一般和sklearn一起使用,但是由於sklearn中沒有整合xgboost,所以才需要單獨下載安裝。 xgboost是在GB

python機器學習sklearn——樸素貝葉斯分類器

在scikit-learn中,一共有3個樸素貝葉斯的分類演算法類。分別是GaussianNB,MultinomialNB和BernoulliNB。其中GaussianNB就是先驗為高斯分佈的樸素貝葉斯,MultinomialNB就是先驗為多項式分佈的樸素

python機器學習sklearn——K最近鄰、K最近鄰分類、K最近鄰迴歸

這裡只講述sklearn中如何使用KNN演算法。 無監督最近鄰 NearestNeighbors (最近鄰)實現了 unsupervised nearest neighbors learning(無監督的最近鄰學習)。 它為三種不同的最近鄰演算法

Python機器學習SKLearn資料集轉換預處理資料

資料集轉換之預處理資料:       將輸入的資料轉化成機器學習演算法可以使用的資料。包含特徵提取和標準化。       原因:資料集的標準化(服從均值為0方差為1的標準正態分佈(高斯分佈))是大多數機器學習演算法的常見要求。      如果原始資料不服從高斯分佈,在預測時

Python機器學習sklearn幾種迴歸演算法建模及分析(實驗)

最簡單的迴歸模型就是線性迴歸 資料匯入與視覺化分析 from IPython.display import Image %matplotlib inline # Added version che