随機森林的簡要解釋
随機森林即采用建構多棵随機樹的形式,讓這些随機樹同時并行處理一組資料,并對各個樹的分類結果進行彙總并投票,最終傳回随機森林的分類結果。
分類結果輸出
傳入資料集包含内容有: [‘data’, ‘target’, ‘target_names’, ‘DESCR’, ‘feature_names’]
訓練集樣本大小: (120, 4)
訓練集标簽大小: (120,)
測試集樣本大小: (30, 4)
測試集标簽大小: (30,)
模型測試集準确率為: 0.9333333333333333
特征重要程度為:
(‘sepal length (cm)’, 0.0915733052877204)
(‘sepal width (cm)’, 0.01876997123319593)
(‘petal length (cm)’, 0.44209219100019126)
(‘petal width (cm)’, 0.4475645324788924)
Show me the code
導包
# 資料集
from sklearn import datasets
# 随機森林子產品
from sklearn.ensemble import RandomForestClassifier
# 訓練集測試集分割子產品
from sklearn.model_selection import train_test_split
import numpy as np
import matplotlib.pyplot as plt
擷取資料
# 自定義導入資料集函數
def get_data(total_data):
# 顯示total_data包含的内容
print("傳入資料集包含内容有:", [x for x in total_data.keys()])
# 樣本
x_true = total_data.data
# 标簽
y_true = total_data.target
# 特征名稱
feature_names = total_data.feature_names
# 類名
target_names = total_data.target_names
return x_true, y_true, feature_names, target_names
主函數及調用
# 定義主函數
def main():
# 利用自定義函數導入Iris資料集
total_iris = datasets.load_iris()
x_true, y_true, feature_names, target_names = get_data(total_iris)
# 分割資料集
rate_test = 0.2 # 訓練集比例
x_train, x_test, y_train, y_test = train_test_split(x_true,
y_true,
test_size= rate_test)
print("\n訓練集樣本大小:", x_train.shape)
print("訓練集标簽大小:", y_train.shape)
print("測試集樣本大小:", x_test.shape)
print("測試集标簽大小:", y_test.shape)
# 執行個體化随機森林分類器
clf = RandomForestClassifier()
# 訓練模型
clf.fit(x_train, y_train)
# 評價模型
score = clf.score(x_test, y_test)
print("\n模型測試集準确率為:", score)
# 顯示特征重要程度
print("\n特征重要程度為:")
info = [*zip(feature_names, clf.feature_importances_)]
for cell in info:
print(cell)
# 調用主函數
if __name__ == "__main__":
main()