以下記錄機械學習實驗:
(1)從scikit-learn 庫中加載 iris 數據集或本地讀取,進行數據分析; (2)採用五折交叉驗證劃分訓練集和測試集,使用訓練集對隨機森林分類算法進行訓 練; (3)使用五折交叉驗證對模型性能(準確度、精度、召回率和F1值)進行測試; (4)通過對測試結果進行比較分析,評估模型性能; (5)完成實驗報告中實驗八的部分。
算法步驟、代碼、及結果
- 算法偽代碼
class RandomForest:
def init(self, n_estimators):
self.n_estimators = n_estimators # 樹的數量
self.trees = [] # 存儲所有決策樹
def fit(self, X, y):
for _ in range(self.n_estimators):
# 生成自助採樣數據集
bootstrap_X, bootstrap_y = bootstrap_sample(X, y)
# 創建決策樹
tree = DecisionTree()
# 訓練決策樹
tree.fit(bootstrap_X, bootstrap_y)
# 將決策樹添加到森林中
self.trees.append(tree)
def predict(self, X):
# 收集每棵樹的預測結果
tree_predictions = [tree.predict(X) for tree in self.trees]
# 使用投票法確定最終預測結果
return majority_vote(tree_predictions)
- 算法主要代碼
表1. 調用算法參數説明
序號 函數參數 參數含義 説明 備註 - n_estimators 森林中樹的數量 默認值為100,樹的數量越多模型效果越好,但計算開銷也越大 整數類型
- max_depth 每棵樹的最大深度 默認值為None,即樹可以無限生長,直到所有葉子節點都是純的或達到最小樣本數 整數類型
- random_seed 隨機種子 默認值為42,用於控制自助採樣和決策樹生長的隨機性 整數類型