以下記錄機械學習實驗:

(1)從scikit-learn 庫中加載 iris 數據集或本地讀取,進行數據分析; (2)採用五折交叉驗證劃分訓練集和測試集,使用訓練集對隨機森林分類算法進行訓 練; (3)使用五折交叉驗證對模型性能(準確度、精度、召回率和F1值)進行測試; (4)通過對測試結果進行比較分析,評估模型性能; (5)完成實驗報告中實驗八的部分。

算法步驟、代碼、及結果

  1. 算法偽代碼

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. 算法主要代碼
    表1. 調用算法參數説明
    序號 函數參數 參數含義 説明 備註
  2. n_estimators 森林中樹的數量 默認值為100,樹的數量越多模型效果越好,但計算開銷也越大 整數類型
  3. max_depth 每棵樹的最大深度 默認值為None,即樹可以無限生長,直到所有葉子節點都是純的或達到最小樣本數 整數類型
  4. random_seed 隨機種子 默認值為42,用於控制自助採樣和決策樹生長的隨機性 整數類型