欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)隨機(jī)森林算法的示例代碼

 更新時(shí)間:2023年06月05日 09:30:47   作者:刻意思考  
隨機(jī)森林的英文是 Random Forest,英文簡(jiǎn)寫(xiě)是 RF,也是常用的人工智能算法,本文為大家介紹了Python實(shí)現(xiàn)隨機(jī)森林算法的示例代碼,希望對(duì)大家有所幫助

在數(shù)據(jù)挖掘的過(guò)程中,我們經(jīng)常會(huì)遇到一些問(wèn)題,比如:如何選擇各種分類(lèi)器,到底選擇哪個(gè)分類(lèi)算法,是SVM、決策樹(shù)、還是KNN?如何優(yōu)化分類(lèi)器的參數(shù),以便得到更好的分類(lèi)準(zhǔn)確率?

隨機(jī)森林分類(lèi)器

隨機(jī)森林的英文是 Random Forest,英文簡(jiǎn)寫(xiě)是 RF。它是一個(gè)包含多個(gè)決策樹(shù)的分類(lèi)器,每一個(gè)子分類(lèi)器都是一棵 CART 分類(lèi)回歸樹(shù)。所以隨機(jī)森林既可以做分類(lèi),又可以做回歸。

  • 當(dāng)它做分類(lèi)的時(shí)候,輸出結(jié)果是每個(gè)子分類(lèi)器的分類(lèi)結(jié)果中最多的那個(gè)??梢岳斫馐敲總€(gè)分類(lèi)器都做投票,取投票最多的那個(gè)結(jié)果。
  • 當(dāng)它做回歸的時(shí)候,輸出結(jié)果是每棵 CART 樹(shù)的回歸結(jié)果的平均值。

在 sklearn 中,我們使用 RandomForestClassifier() 構(gòu)造隨機(jī)森林模型,函數(shù)里有一些常用的構(gòu)造參數(shù):

  • n_estimators: 隨機(jī)森林里決策樹(shù)的個(gè)數(shù),默認(rèn)是10
  • criterion:決策樹(shù)分裂的標(biāo)準(zhǔn),默認(rèn)是基尼指數(shù)(CART算法),也可以選擇entropy(ID3算法)
  • max_depth: 決策樹(shù)的最大深度,默認(rèn)是None, 不限制
  • n_jobs:擬合和預(yù)測(cè)的時(shí)候CPU的核數(shù),默認(rèn)是1

GridSearchCV 對(duì)模型參數(shù)進(jìn)行調(diào)優(yōu)

分類(lèi)算法,我們經(jīng)常需要調(diào)節(jié)網(wǎng)絡(luò)參數(shù)(對(duì)應(yīng)上面的構(gòu)造參數(shù)),目的是得到更好的分類(lèi)結(jié)果。實(shí)際上一個(gè)分類(lèi)算法有很多參數(shù),取值范圍也比較廣,那么該如何調(diào)優(yōu)呢?

Python 給我們提供了一個(gè)很好用的工具 GridSearchCV,它是Python的參數(shù)自動(dòng)搜索模塊,能夠自動(dòng)決策最優(yōu)參數(shù)。

我們使用 GridSearchCV(estimator, param_grid, cv=None, scoring=None) 構(gòu)造參數(shù)的自動(dòng)搜索模塊,這里有一些主要的參數(shù)需要說(shuō)明:

  • estimator:代表采用的分類(lèi)器,如隨機(jī)森林、決策樹(shù)、SVM、KNN等
  • param_grid: 代表想要優(yōu)化的參數(shù)及取值
  • cv: 交叉驗(yàn)證的折數(shù),默認(rèn)是None, 代表使用三折交叉驗(yàn)證
  • scoring:準(zhǔn)確度的評(píng)價(jià)標(biāo)準(zhǔn),默認(rèn)是None, 也就是需要使用score函數(shù)

舉例,我們使用sklearn自帶的IRIS數(shù)據(jù)集,采用隨機(jī)森林對(duì)IRIS數(shù)據(jù)分類(lèi)。如果我們想知道n_estimators在1-10的范圍內(nèi)取哪個(gè)值的分類(lèi)結(jié)果最好,可以編寫(xiě)代碼如下:

# -*- coding: utf-8 -*-
# 使用RandomForest對(duì)IRIS數(shù)據(jù)集進(jìn)行分類(lèi)
# 利用GridSearchCV尋找最優(yōu)參數(shù)

from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV

rf = RandomForestClassifier()
parameters = {"n_estimators": range(1, 11)}
iris = load_iris()

# 使用GridSearchCV進(jìn)行參數(shù)調(diào)優(yōu)
clf = GridSearchCV(estimator=rf, param_grid=parameters)

# 對(duì)iris數(shù)據(jù)集進(jìn)行分類(lèi)
clf.fit(iris.data, iris.target)

print("最優(yōu)分?jǐn)?shù): %.4lf" % clf.best_score_)
print("最優(yōu)參數(shù):", clf.best_params_)

運(yùn)行結(jié)果:

最優(yōu)分?jǐn)?shù): 0.9600
最優(yōu)參數(shù): {'n_estimators': 3}

使用 Pipeline 進(jìn)行流水線(xiàn)作業(yè)

在進(jìn)行數(shù)據(jù)分類(lèi)的時(shí)候往往都是有多個(gè)步驟的,比如先對(duì)數(shù)據(jù)進(jìn)行規(guī)范化處理,也可以用PCA對(duì)數(shù)據(jù)降維,最后再使用分類(lèi)器進(jìn)行分類(lèi)。

Python有一種Pipeline管道機(jī)制。管道機(jī)制就是讓我們把每一步都按順序列下來(lái),從而創(chuàng)建Pipeline流水線(xiàn)作業(yè)。每一步都采用(‘名稱(chēng)’,步驟)的方式來(lái)表示。

那么我們現(xiàn)在采用Pipeline管道機(jī)制,用隨機(jī)森林對(duì)IRIS數(shù)據(jù)集做一下分類(lèi)。先用StandardScaler方法對(duì)數(shù)據(jù)規(guī)范化,即采用數(shù)據(jù)規(guī)范化為均值為0,方差為1的正態(tài)分布,然后采用PCA方法對(duì)數(shù)據(jù)進(jìn)行降維,最后采用隨機(jī)森林進(jìn)行分類(lèi),編寫(xiě)代碼如下:

from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

rf = RandomForestClassifier()
parameters = {"randomforestclassifier__n_estimators": range(1, 11)}
iris = load_iris()
pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('pca', PCA()),
    ('randomforestclassifier', rf)
])

clf = GridSearchCV(estimator=pipeline, param_grid=parameters)
clf.fit(iris.data, iris.target)
print("最優(yōu)分?jǐn)?shù): %.4lf" % clf.best_score_)
print("最優(yōu)參數(shù):", clf.best_params_)

運(yùn)行結(jié)果如下:

最優(yōu)分?jǐn)?shù): 0.9600
最優(yōu)參數(shù): {'randomforestclassifier__n_estimators': 9}

到此這篇關(guān)于Python實(shí)現(xiàn)隨機(jī)森林算法的示例代碼的文章就介紹到這了,更多相關(guān)Python隨機(jī)森林算法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 樸素貝葉斯分類(lèi)算法原理與Python實(shí)現(xiàn)與使用方法案例

    樸素貝葉斯分類(lèi)算法原理與Python實(shí)現(xiàn)與使用方法案例

    這篇文章主要介紹了樸素貝葉斯分類(lèi)算法原理與Python實(shí)現(xiàn)與使用方法,結(jié)合具體實(shí)例形式分析了樸素貝葉斯分類(lèi)算法的概念、原理、實(shí)現(xiàn)流程與相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • Python OpenCV 針對(duì)圖像細(xì)節(jié)的不同操作技巧

    Python OpenCV 針對(duì)圖像細(xì)節(jié)的不同操作技巧

    這篇文章主要介紹了Python OpenCV 針對(duì)圖像細(xì)節(jié)的不同操作,包括圖像像素的說(shuō)明,圖像屬性信息的獲取與修改以及圖像通道的知識(shí)(包括拆分通道和合并通道),需要的朋友可以參考下
    2021-08-08
  • python獲取代碼運(yùn)行時(shí)間的實(shí)例代碼

    python獲取代碼運(yùn)行時(shí)間的實(shí)例代碼

    今天小編就為大家分享一篇python獲取代碼運(yùn)行時(shí)間的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Python測(cè)試模塊doctest使用解析

    Python測(cè)試模塊doctest使用解析

    這篇文章主要介紹了Python測(cè)試模塊doctest使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 利用python打開(kāi)攝像頭及顏色檢測(cè)方法

    利用python打開(kāi)攝像頭及顏色檢測(cè)方法

    今天小編就為大家分享一篇利用python打開(kāi)攝像頭及顏色檢測(cè)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • python使用PIL和matplotlib獲取圖片像素點(diǎn)并合并解析

    python使用PIL和matplotlib獲取圖片像素點(diǎn)并合并解析

    這篇文章主要介紹了python使用PIL和matplotlib獲取圖片像素點(diǎn)并合并解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Django框架使用mysql視圖操作示例

    Django框架使用mysql視圖操作示例

    這篇文章主要介紹了Django框架使用mysql視圖操作,結(jié)合實(shí)例形式分析了mysql視圖的創(chuàng)建、查看以及Django框架使用mysql視圖相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • python try 異常處理(史上最全)

    python try 異常處理(史上最全)

    為了處理異常,我們使用try...except,這篇文章主要介紹了python try 異常處理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • 利用python畫(huà)出AUC曲線(xiàn)的實(shí)例

    利用python畫(huà)出AUC曲線(xiàn)的實(shí)例

    今天小編就為大家分享一篇利用python畫(huà)出AUC曲線(xiàn)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • PyTorch的安裝與使用示例詳解

    PyTorch的安裝與使用示例詳解

    本文介紹了熱門(mén)AI框架PyTorch的conda安裝方案,與簡(jiǎn)單的自動(dòng)微分示例,并順帶講解了一下PyTorch開(kāi)源Github倉(cāng)庫(kù)中的兩個(gè)Issue內(nèi)容,需要的朋友可以參考下
    2024-05-05

最新評(píng)論