目錄
集成學習方法之隨機森林
1、集成學習方法
2、隨機森林
3、隨機森林原理
為什么采用BootStrap抽樣
為什么要有放回地抽樣
4、API
5、代碼
代碼解釋
結(jié)果
6、隨機森林總結(jié)
?文章來源地址http://www.zghlxwxcb.cn/news/detail-695239.html
??作者介紹:雙非本科大三網(wǎng)絡(luò)工程專業(yè)在讀,阿里云專家博主,專注于Java領(lǐng)域?qū)W習,擅長web應(yīng)用開發(fā)、數(shù)據(jù)結(jié)構(gòu)和算法,初步涉獵Python人工智能開發(fā)。
??主頁:@逐夢蒼穹
?分類算法系列①:初識概念
?分類算法系列②:KNN(K-近鄰)算法
?分類算法系列③:模型選擇與調(diào)優(yōu) (Facebook簽到位置預(yù)測)
?分類算法系列④:樸素貝葉斯算法
?分類算法系列⑤:??決策樹
??您的三連支持,是我創(chuàng)作的最大動力??
集成學習方法之隨機森林
1、集成學習方法
集成學習通過建立幾個模型組合的來解決單一預(yù)測問題。
它的工作原理是生成多個分類器/模型,各自獨立地學習和作出預(yù)測。
這些預(yù)測最后結(jié)合成組合預(yù)測,因此優(yōu)于任何一個單分類的做出預(yù)測。
集成學習方法(Ensemble Learning)是一種機器學習技術(shù),旨在通過組合多個基本模型(弱學習器或基學習器)的預(yù)測來提高整體性能和泛化能力。集成學習的核心思想是,通過結(jié)合多個模型的意見和決策,可以減少單個模型的誤差,并在各種不同情況下獲得更穩(wěn)健的結(jié)果。集成學習方法通常比單個模型更強大,適用于各種機器學習任務(wù),包括分類、回歸和聚類等。
以下是一些集成學習方法的主要概念和特點:
- 基本模型(弱學習器): 集成學習通常由多個基本模型組成,這些基本模型可以是不同類型的機器學習算法,例如決策樹、支持向量機、神經(jīng)網(wǎng)絡(luò)等。這些基本模型通常被稱為弱學習器,它們不一定表現(xiàn)得非常強大,但它們應(yīng)該略有不同。
- 組合策略: 集成學習方法使用一種組合策略來將多個基本模型的預(yù)測結(jié)果結(jié)合起來,以生成最終的集成模型的預(yù)測。常見的組合策略包括投票法、平均法、加權(quán)平均法等。組合策略的選擇取決于任務(wù)的性質(zhì)和問題的需求。
- 多樣性: 集成學習的有效性依賴于基本模型之間的多樣性。多樣性意味著基本模型在不同方面或者在不同數(shù)據(jù)子集上產(chǎn)生不同的預(yù)測。多樣性有助于減少模型的偏差,并提高整體性能。
- Bagging和Boosting: Bagging(Bootstrap Aggregating)和Boosting是兩種常見的集成學習方法。Bagging通過隨機采樣訓練數(shù)據(jù)多次生成多個基本模型,并對它們的預(yù)測結(jié)果進行平均。Boosting則是通過迭代訓練多個基本模型,每個模型都關(guān)注先前模型預(yù)測錯誤的樣本,以便提高這些樣本的分類準確度。
- 隨機性: 隨機性是集成學習中常用的技巧之一。通過引入隨機性,例如隨機抽樣、隨機特征選擇等,可以增加模型的多樣性,從而提高集成模型的性能。
- 特征重要性: 集成學習方法通??梢蕴峁┨卣髦匾缘墓烙?,幫助識別哪些特征對問題的解決起到了關(guān)鍵作用。
常見的集成學習方法包括隨機森林(Random Forest)、AdaBoost、Gradient Boosting、XGBoost、LightGBM等。這些方法在各種機器學習競賽和實際問題中都取得了顯著的成功,因為它們可以顯著提高模型的性能,減少過擬合,并提高泛化能力。集成學習方法是現(xiàn)代機器學習中的重要技術(shù)之一,廣泛應(yīng)用于各種領(lǐng)域。
2、隨機森林
在機器學習中,隨機森林是一個包含多個決策樹的分類器,并且其輸出的類別是由個別樹輸出的類別的眾數(shù)而定。
例如, 如果你訓練了5個樹, 其中有4個樹的結(jié)果是True, 1個數(shù)的結(jié)果是False, 那么最終投票結(jié)果就是True
隨機森林(Random Forest)是一種集成學習方法,用于解決分類和回歸問題。它基于決策樹(Decision Tree)算法,通過構(gòu)建多個決策樹并將它們組合起來,從而提高了模型的性能和魯棒性。以下是關(guān)于隨機森林的主要特點和原理的解釋:
- 集成方法: 隨機森林是一種集成學習方法,意味著它將多個模型組合在一起,以獲得比單個模型更好的性能。在隨機森林中,這些模型是決策樹,被稱為森林中的樹。
- 隨機性: 隨機森林引入了兩種隨機性來提高模型的多樣性和魯棒性。首先,它使用隨機抽樣技術(shù)從訓練數(shù)據(jù)中隨機選擇一部分樣本來訓練每個決策樹,這被稱為自助采樣(Bootstrap Sampling)。其次,在每次分裂節(jié)點時,它隨機選擇一個子集的特征來進行分裂,而不是考慮所有特征。這種隨機性有助于減少模型的過擬合問題。
- 多個決策樹: 隨機森林通常由多個決策樹組成,每個決策樹都獨立地訓練,并且每個樹都對數(shù)據(jù)進行不同的采樣和特征選擇。這些決策樹之間是相互獨立的,它們的預(yù)測結(jié)果會被組合起來。
- 投票或平均: 在分類問題中,隨機森林通常采用多數(shù)投票的方式來確定最終的分類結(jié)果。也就是說,每個決策樹都對輸入樣本進行分類,最終分類結(jié)果是得到最多投票的類別。在回歸問題中,隨機森林采用平均的方式,將每個決策樹的預(yù)測結(jié)果取平均值作為最終的預(yù)測值。
- 高性能和魯棒性: 隨機森林具有良好的性能和魯棒性。它通常對異常值和噪聲具有一定的容忍度,并且不太容易過擬合。由于多個決策樹的組合,隨機森林通常能夠捕獲數(shù)據(jù)中的復(fù)雜關(guān)系,從而在各種問題上表現(xiàn)良好。
- 特征重要性: 隨機森林可以估計每個特征的重要性,以幫助了解哪些特征對問題的解決具有更大的影響力。
總之,隨機森林是一種強大的機器學習方法,適用于多種任務(wù),包括分類和回歸。它通過引入隨機性、構(gòu)建多個決策樹并將它們組合起來,提供了高性能、魯棒性和泛化能力強的模型。這使得它成為許多實際問題中的首選算法之一。
3、隨機森林原理
隨機森林的數(shù)學原理涉及到隨機抽樣、特征選擇、決策樹構(gòu)建和集成方法。
以下是更詳細的數(shù)學公式和說明:
1. 隨機抽樣(Bootstrap Sampling):
隨機森林使用Bootstrap采樣從訓練數(shù)據(jù)集中隨機選擇N個樣本,其中N是訓練數(shù)據(jù)集的大小。
這個過程可以用以下數(shù)學公式表示:
- 給定訓練數(shù)據(jù)集D,包含N個樣本:
- 隨機抽樣生成一個自助采樣集D',包含N個樣本,每個樣本通過有放回的方式抽?。?
這個過程引入了數(shù)據(jù)的隨機性,使得每棵決策樹的訓練數(shù)據(jù)都略有不同。
2. 特征隨機選擇:
在每次決策樹節(jié)點的分裂過程中,隨機森林引入了特征的隨機性。
假設(shè)總共有M個特征,在每次分裂節(jié)點時,從這些特征中隨機選擇m個特征,其中m通常由用戶指定。
這可以表示為以下數(shù)學公式:
- 給定總特征數(shù)M和每次分裂所選特征數(shù)m,隨機選擇一個特征子集A,其中A包含m個特征,A是M中的子集。
3. 決策樹的構(gòu)建:
決策樹的構(gòu)建過程涉及到選擇最佳特征和分裂點,通常通過一些分裂標準(例如信息增益、基尼指數(shù))來確定。具體的數(shù)學公式和說明可能因使用的決策樹算法而異。
4. 集成方法:
在隨機森林中,多個決策樹的結(jié)果被集成以進行分類或回歸。對于分類問題,最終的分類結(jié)果是通過多數(shù)投票法來確定:
- 給定N個決策樹的分類結(jié)果 ,其中每個 是一個類別。
- 最終的分類結(jié)果 是獲得最多投票的類別。
對于回歸問題,最終的回歸結(jié)果是多個決策樹的預(yù)測結(jié)果的平均值:
- 給定N個決策樹的回歸結(jié)果 ,其中每個 是一個實數(shù)值。
- 最終的回歸結(jié)果 是
這個過程將多個模型的預(yù)測結(jié)果合并為一個最終的預(yù)測結(jié)果。
5. 特征重要性評估:
隨機森林通常通過觀察每個特征在多個決策樹中的分裂情況以及其對模型性能的影響來估計特征的重要性。一個常用的方法是通過特征在決策樹中用于分裂的次數(shù)來評估其重要性,次數(shù)越多,特征越重要。
需要注意的是,具體的數(shù)學公式和算法細節(jié)可能因隨機森林的實現(xiàn)和問題的不同而有所不同。上述內(nèi)容提供了隨機森林數(shù)學原理的一般概述,具體的數(shù)學公式和推導可能需要進一步深入研究和了解隨機森林的具體實現(xiàn)。
為什么采用BootStrap抽樣
隨機森林采用Bootstrap抽樣的主要原因是為了引入數(shù)據(jù)的隨機性和多樣性,從而提高模型的性能和泛化能力。下面是為什么采用Bootstrap抽樣的幾個關(guān)鍵原因:
- 引入隨機性: Bootstrap抽樣是一種有放回的隨機抽樣方法,它允許相同的樣本被多次抽取,同時可能導致某些樣本被排除。這種隨機性使得每個Bootstrap樣本都是從原始數(shù)據(jù)中隨機選擇的,從而引入了數(shù)據(jù)的隨機性。
- 增加多樣性: 由于每個Bootstrap樣本都是略有不同的,每棵決策樹的訓練數(shù)據(jù)也會有所不同。這增加了每個決策樹的多樣性,因為它們基于不同的訓練數(shù)據(jù)進行訓練。多樣性有助于減少過擬合,提高模型的泛化能力。
- 降低方差: 隨機森林的核心思想之一是通過組合多個決策樹的結(jié)果來降低模型的方差。由于每個決策樹都是在不同的Bootstrap樣本上訓練的,它們會產(chǎn)生不同的預(yù)測結(jié)果。通過取多個決策樹的平均值或多數(shù)投票,可以降低單個決策樹的方差,從而提高模型的穩(wěn)定性。
- 增加模型的魯棒性: 由于Bootstrap抽樣引入了數(shù)據(jù)的隨機性,模型對于訓練數(shù)據(jù)中的噪聲和異常值具有一定的魯棒性。這意味著隨機森林對于一些數(shù)據(jù)中的不確定性能夠更好地處理。
總的來說,采用Bootstrap抽樣是隨機森林成功的關(guān)鍵因素之一,它通過引入隨機性、多樣性和降低方差的方式改善了模型的性能,使其在各種問題中表現(xiàn)出色。這種隨機性和多樣性是隨機森林的特點,使其成為強大的集成學習方法。
為什么要有放回地抽樣
如果不是有放回的抽樣,那么每棵樹的訓練樣本都是不同的,都是沒有交集的,這樣每棵樹訓練出來都是有很大的差異的;
而隨機森林最后分類取決于多棵樹(弱分類器)的投票表決。
4、API
class sklearn.ensemble.RandomForestClassifier(
??????? n_estimators=10, criterion=’gini’, max_depth=None, bootstrap=True, random_state=None, min_samples_split=2)
??? 隨機森林分類器
??? n_estimators:integer,optional(default = 10)森林里的樹木數(shù)量120,200,300,500,800,1200
??? criteria:string,可選(default =“gini”)分割特征的測量方法
??? max_depth:integer或None,可選(默認=無)樹的最大深度 5,8,15,25,30
??? max_features="auto”,每個決策樹的最大特征數(shù)量
??? If "auto", then max_features=sqrt(n_features).
??? If "sqrt", then max_features=sqrt(n_features) (same as "auto").
??? If "log2", then max_features=log2(n_features).
??? If None, then max_features=n_features.
??? bootstrap:boolean,optional(default = True)是否在構(gòu)建樹時使用放回抽樣
??? min_samples_split:節(jié)點劃分最少樣本數(shù)
??? min_samples_leaf:葉子節(jié)點的最小樣本數(shù)
??? 超參數(shù):n_estimator, max_depth, min_samples_split,min_samples_leaf
5、代碼
# -*- coding: utf-8 -*-
# @Author:︶ㄣ釋然
# @Time: 2023/9/2 23:07
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split, GridSearchCV
'''
class sklearn.ensemble.RandomForestClassifier(
n_estimators=10, criterion=’gini’, max_depth=None, bootstrap=True, random_state=None, min_samples_split=2)
隨機森林分類器
n_estimators:integer,optional(default = 10)森林里的樹木數(shù)量120,200,300,500,800,1200
criteria:string,可選(default =“gini”)分割特征的測量方法
max_depth:integer或None,可選(默認=無)樹的最大深度 5,8,15,25,30
max_features="auto”,每個決策樹的最大特征數(shù)量
If "auto", then max_features=sqrt(n_features).
If "sqrt", then max_features=sqrt(n_features) (same as "auto").
If "log2", then max_features=log2(n_features).
If None, then max_features=n_features.
bootstrap:boolean,optional(default = True)是否在構(gòu)建樹時使用放回抽樣
min_samples_split:節(jié)點劃分最少樣本數(shù)
min_samples_leaf:葉子節(jié)點的最小樣本數(shù)
超參數(shù):n_estimator, max_depth, min_samples_split,min_samples_leaf
'''
def randomForest():
"""
決策樹進行乘客生存預(yù)測
"""
# 1、獲取數(shù)據(jù)
titan = pd.read_csv("./data/titanic/titanic.csv")
# 2、數(shù)據(jù)的處理
x = titan[['pclass', 'age', 'sex']]
y = titan['survived']
# print(x , y)
# 缺失值需要處理,將特征當中有類別的這些特征進行字典特征抽取
x['age'].fillna(x['age'].mean(), inplace=True)
# 對于x轉(zhuǎn)換成字典數(shù)據(jù)x.to_dict(orient="records")
# [{"pclass": "1st", "age": 29.00, "sex": "female"}, {}]
dict = DictVectorizer(sparse=False)
x = dict.fit_transform(x.to_dict(orient="records"))
print(dict.get_feature_names_out())
print(x)
# 分割訓練集合測試集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)
# 在決策樹代碼中,下面開始使用決策樹預(yù)估器
# 這里需要使用的是隨機森林,先引入網(wǎng)格搜索與交叉驗證
# 引入隨機森林分類器
estimator = RandomForestClassifier()
# 加入網(wǎng)格搜索與交叉驗證
# 參數(shù)準備
param_dict = {"n_estimators": [120, 200, 300, 500, 800, 1200], "max_depth": [5, 8, 15, 25, 30]}
estimator = GridSearchCV(estimator, param_grid=param_dict, cv=3)
estimator.fit(x_train, y_train)
# 5)模型評估
# 方法1:直接比對真實值和預(yù)測值
y_predict = estimator.predict(x_test)
print("y_predict:\n", y_predict)
print("直接比對真實值和預(yù)測值:\n", y_test == y_predict)
# 方法2:計算準確率
score = estimator.score(x_test, y_test)
print("準確率為:\n", score)
# 最佳參數(shù):best_params_
print("最佳參數(shù):\n", estimator.best_params_)
# 最佳結(jié)果:best_score_
print("最佳結(jié)果:\n", estimator.best_score_)
# 最佳估計器:best_estimator_
print("最佳估計器:\n", estimator.best_estimator_)
# 交叉驗證結(jié)果:cv_results_
print("交叉驗證結(jié)果:\n", estimator.cv_results_)
if __name__ == '__main__':
randomForest()
代碼解釋
這段代碼的主要目標是使用隨機森林(RandomForestClassifier)來建立一個生存預(yù)測模型,該模型用于預(yù)測泰坦尼克號乘客的生存情況。以下是代碼的主要步驟和功能:
- 導入必要的庫和模塊,包括pandas用于數(shù)據(jù)處理,sklearn中的隨機森林分類器(RandomForestClassifier)、字典特征抽?。―ictVectorizer)以及網(wǎng)格搜索與交叉驗證(GridSearchCV)。
- 從CSV文件中加載泰坦尼克號乘客的數(shù)據(jù)集,將數(shù)據(jù)存儲在名為 "titan" 的DataFrame中。
- 數(shù)據(jù)預(yù)處理:
- 選擇特征:從數(shù)據(jù)集中選擇了三個特征,包括 'pclass'(船艙等級)、'age'(年齡)、'sex'(性別)。
- 處理缺失值:對 'age' 特征中的缺失值使用平均值進行填充。
- 字典特征抽?。菏褂肈ictVectorizer將選擇的特征轉(zhuǎn)換為字典數(shù)據(jù)表示。
- 分割訓練集和測試集:將數(shù)據(jù)集劃分為訓練集(x_train, y_train)和測試集(x_test, y_test),其中x包含特征,y包含目標(生存情況)。
- 創(chuàng)建隨機森林模型:
- 定義一個隨機森林分類器(RandomForestClassifier)的實例。
- 使用網(wǎng)格搜索與交叉驗證(GridSearchCV)來搜索最佳超參數(shù),包括 'n_estimators'(決策樹的數(shù)量)和 'max_depth'(決策樹的最大深度)。
- 模型訓練:使用訓練集(x_train, y_train)訓練隨機森林分類器,找到最佳超參數(shù)組合。
- 模型評估:
- 使用訓練好的模型進行預(yù)測(y_predict)。
- 比對預(yù)測值和真實值,輸出比對結(jié)果。
- 計算模型的準確率(score)來評估模型性能。
- 打印出最佳參數(shù)(best_params_)、最佳結(jié)果(best_score_)、最佳估計器(best_estimator_)以及交叉驗證結(jié)果(cv_results_)。
總之,這段代碼使用了隨機森林算法來構(gòu)建一個生存預(yù)測模型,通過網(wǎng)格搜索和交叉驗證選擇最佳超參數(shù),然后對模型進行訓練和評估,最終輸出了模型的性能指標和最佳參數(shù)。這個模型可用于預(yù)測泰坦尼克號乘客是否生存。
結(jié)果
部分結(jié)果:
全部結(jié)果:
['age' 'pclass=1st' 'pclass=2nd' 'pclass=3rd' 'sex=female' 'sex=male']
[[29. 1. 0. 0. 1. 0. ]
[ 2. 1. 0. 0. 1. 0. ]
[30. 1. 0. 0. 0. 1. ]
...
[31.19418104 0. 0. 1. 0. 1. ]
[31.19418104 0. 0. 1. 1. 0. ]
[31.19418104 0. 0. 1. 0. 1. ]]
y_predict:
[0 1 0 0 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1
0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0
0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0
1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 1
0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1
1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0]
直接比對真實值和預(yù)測值:
372 True
331 True
419 True
1207 False
214 True
...
353 True
638 True
1206 True
837 True
150 False
Name: survived, Length: 394, dtype: bool
準確率為:
0.8147208121827412
最佳參數(shù):
{'max_depth': 5, 'n_estimators': 300}
最佳結(jié)果:
0.8258854754351977
最佳估計器:
RandomForestClassifier(max_depth=5, n_estimators=300)
交叉驗證結(jié)果:
{'mean_fit_time': array([0.34114035, 0.6787285 , 1.19496473, 1.63294808, 2.61791738,
3.90683413, 0.42621287, 0.66980179, 1.045005 , 1.74056196,
2.94625727, 4.13277896, 0.42489568, 0.72270465, 1.04371158,
1.64689604, 2.64780331, 4.51028919, 0.36052966, 0.71541214,
1.28693382, 2.07006788, 2.96712073, 4.48969253, 0.51682838,
0.78613575, 1.24840148, 1.92716988, 2.94232289, 4.1270256 ]), 'std_fit_time': array([0.02160469, 0.06343764, 0.15187076, 0.03610656, 0.16918523,
0.33522165, 0.00201884, 0.04676447, 0.02417938, 0.11845516,
0.19509487, 0.23404712, 0.03392946, 0.07600673, 0.10253338,
0.09753914, 0.09068534, 0.30426279, 0.01880941, 0.17041238,
0.16278968, 0.02310135, 0.19769377, 0.17910675, 0.04927973,
0.04468589, 0.21264184, 0.13745615, 0.21043222, 0.13223121]), 'mean_score_time': array([0.02984413, 0.06995718, 0.10653249, 0.13419573, 0.30652507,
0.31377006, 0.03470572, 0.05790703, 0.09903876, 0.15190991,
0.22437676, 0.36459335, 0.03852383, 0.06104024, 0.08556557,
0.1638821 , 0.22833014, 0.44704652, 0.03534373, 0.07807342,
0.14058359, 0.1698943 , 0.22634244, 0.46184222, 0.04569523,
0.07974943, 0.1173528 , 0.1592354 , 0.27193197, 0.33379459]), 'std_score_time': array([0.00183949, 0.00774793, 0.01441184, 0.01287631, 0.10014877,
0.01743236, 0.00193149, 0.00898091, 0.01622788, 0.00807192,
0.01109652, 0.04542851, 0.00246657, 0.00328897, 0.00780091,
0.02189977, 0.0185611 , 0.1126361 , 0.00214615, 0.03355603,
0.047558 , 0.03386113, 0.01724394, 0.0909068 , 0.00655658,
0.0122869 , 0.01489499, 0.00573899, 0.022459 , 0.01732852]), 'param_max_depth': masked_array(data=[5, 5, 5, 5, 5, 5, 8, 8, 8, 8, 8, 8, 15, 15, 15, 15, 15,
15, 25, 25, 25, 25, 25, 25, 30, 30, 30, 30, 30, 30],
mask=[False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False,
False, False, False, False, False, False],
fill_value='?',
dtype=object), 'param_n_estimators': masked_array(data=[120, 200, 300, 500, 800, 1200, 120, 200, 300, 500, 800,
1200, 120, 200, 300, 500, 800, 1200, 120, 200, 300,
500, 800, 1200, 120, 200, 300, 500, 800, 1200],
mask=[False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False,
False, False, False, False, False, False],
fill_value='?',
dtype=object), 'params': [{'max_depth': 5, 'n_estimators': 120}, {'max_depth': 5, 'n_estimators': 200}, {'max_depth': 5, 'n_estimators': 300}, {'max_depth': 5, 'n_estimators': 500}, {'max_depth': 5, 'n_estimators': 800}, {'max_depth': 5, 'n_estimators': 1200}, {'max_depth': 8, 'n_estimators': 120}, {'max_depth': 8, 'n_estimators': 200}, {'max_depth': 8, 'n_estimators': 300}, {'max_depth': 8, 'n_estimators': 500}, {'max_depth': 8, 'n_estimators': 800}, {'max_depth': 8, 'n_estimators': 1200}, {'max_depth': 15, 'n_estimators': 120}, {'max_depth': 15, 'n_estimators': 200}, {'max_depth': 15, 'n_estimators': 300}, {'max_depth': 15, 'n_estimators': 500}, {'max_depth': 15, 'n_estimators': 800}, {'max_depth': 15, 'n_estimators': 1200}, {'max_depth': 25, 'n_estimators': 120}, {'max_depth': 25, 'n_estimators': 200}, {'max_depth': 25, 'n_estimators': 300}, {'max_depth': 25, 'n_estimators': 500}, {'max_depth': 25, 'n_estimators': 800}, {'max_depth': 25, 'n_estimators': 1200}, {'max_depth': 30, 'n_estimators': 120}, {'max_depth': 30, 'n_estimators': 200}, {'max_depth': 30, 'n_estimators': 300}, {'max_depth': 30, 'n_estimators': 500}, {'max_depth': 30, 'n_estimators': 800}, {'max_depth': 30, 'n_estimators': 1200}], 'split0_test_score': array([0.83713355, 0.83713355, 0.83713355, 0.83713355, 0.83713355,
0.83713355, 0.81107492, 0.81758958, 0.83061889, 0.81433225,
0.81758958, 0.81107492, 0.80781759, 0.80456026, 0.81107492,
0.81433225, 0.80781759, 0.80781759, 0.81107492, 0.81107492,
0.81107492, 0.80781759, 0.80781759, 0.81107492, 0.81107492,
0.81107492, 0.81107492, 0.81107492, 0.81107492, 0.81107492]), 'split1_test_score': array([0.83333333, 0.83006536, 0.83333333, 0.83006536, 0.83333333,
0.83333333, 0.81372549, 0.81699346, 0.81699346, 0.81699346,
0.81699346, 0.81699346, 0.81372549, 0.81699346, 0.81699346,
0.81699346, 0.81699346, 0.81699346, 0.81699346, 0.81699346,
0.80718954, 0.81372549, 0.81699346, 0.81699346, 0.81699346,
0.81699346, 0.81699346, 0.81699346, 0.81699346, 0.81699346]), 'split2_test_score': array([0.79738562, 0.79738562, 0.80718954, 0.79738562, 0.79738562,
0.80392157, 0.79738562, 0.79738562, 0.79738562, 0.79738562,
0.79738562, 0.79738562, 0.79738562, 0.79738562, 0.80065359,
0.80065359, 0.80065359, 0.79411765, 0.80065359, 0.79738562,
0.79411765, 0.79411765, 0.80065359, 0.80065359, 0.80065359,
0.80065359, 0.79738562, 0.79411765, 0.79738562, 0.79738562]), 'mean_test_score': array([0.8226175 , 0.82152818, 0.82588548, 0.82152818, 0.8226175 ,
0.82479615, 0.80739534, 0.81065622, 0.81499933, 0.80957044,
0.81065622, 0.80848467, 0.80630957, 0.80631312, 0.80957399,
0.81065977, 0.80848822, 0.80630957, 0.80957399, 0.80848467,
0.80412737, 0.80522024, 0.80848822, 0.80957399, 0.80957399,
0.80957399, 0.80848467, 0.80739534, 0.80848467, 0.80848467]), 'std_test_score': array([0.01790896, 0.01731352, 0.01331074, 0.01731352, 0.01790896,
0.01484187, 0.00716018, 0.00938689, 0.0136405 , 0.0086842 ,
0.00938689, 0.00821174, 0.00675541, 0.00810026, 0.00675462,
0.00715836, 0.00668756, 0.00939969, 0.00675462, 0.00821174,
0.0072535 , 0.00821286, 0.00668756, 0.00675462, 0.00675462,
0.00675462, 0.00821174, 0.00969468, 0.00821174, 0.00821174]), 'rank_test_score': array([ 3, 5, 1, 5, 3, 2, 24, 9, 7, 16, 9, 19, 27, 26, 11, 8, 17,
27, 11, 19, 30, 29, 17, 11, 11, 11, 19, 25, 19, 19])}
保存為文件(復(fù)制到瀏覽器訪問即可自動下載到本地):
隨機森林驗證泰坦尼克號運行結(jié)果.txt
6、隨機森林總結(jié)
在當前所有算法中,具有極好的準確率
能夠有效地運行在大數(shù)據(jù)集上,處理具有高維特征的輸入樣本,而且不需要降維
能夠評估各個特征在分類問題上的重要性文章來源:http://www.zghlxwxcb.cn/news/detail-695239.html
?
到了這里,關(guān)于分類算法系列⑥:隨機森林的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!