You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中通过循环寻找最大R²以优化随机森林决策树

解决RandomForest采样迭代找最优r值与训练集的问题

以下是修正后的循环迭代代码,同时针对你的需求做了关键逻辑的优化说明:

核心代码实现

import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from scipy.stats import pearsonr
import joblib

# 加载你的数据集(替换为实际加载方式)
df = pd.read_csv("your_dataset.csv")
X = df[['DATA1', 'DATA2', 'DATA3']]
y = df['target']

# 初始化最优结果存储变量
max_r = -1  # 皮尔逊r取值范围[-1,1],初始设为最小值
best_X_train = None
best_y_train = None
best_model = None
n_iterations = 100  # 可根据需求调整迭代次数

# 循环迭代采样与模型训练
for iter_idx in range(n_iterations):
    # 手动实现Bootstrap有放回采样(能直接获取训练集样本)
    sample_idx = np.random.choice(len(X), size=len(X), replace=True)
    X_train = X.iloc[sample_idx]
    y_train = y.iloc[sample_idx]
    
    # 训练随机森林模型
    rf_model = RandomForestClassifier(bootstrap=True, random_state=iter_idx)
    rf_model.fit(X_train, y_train)
    
    # 计算特征与目标列的皮尔逊r(按你的需求调整计算逻辑)
    # 注:若你实际需要的是决定系数R²,可将r值平方后比较
    r_list = []
    for feat in X_train.columns:
        r, _ = pearsonr(X_train[feat], y_train)
        r_list.append(abs(r))  # 取绝对值仅关注相关性强度
    current_r = np.mean(r_list)
    
    # 更新最优结果
    if current_r > max_r:
        max_r = current_r
        best_X_train = X_train.copy()
        best_y_train = y_train.copy()
        best_model = rf_model
    
    # 打印迭代进度(可选)
    if (iter_idx + 1) % 10 == 0:
        print(f"迭代 {iter_idx+1}/{n_iterations} | 当前最优r值: {max_r:.4f}")

# 保存最优训练集与模型
best_X_train.to_csv("best_X_train.csv", index=False)
best_y_train.to_csv("best_y_train.csv", index=False)
joblib.dump(best_model, "best_rf_model.pkl")

print(f"迭代完成,最大r值为 {max_r:.4f},已保存最优训练集和模型")

关键逻辑说明

  1. 手动Bootstrap采样:由于RandomForest内部的Bootstrap采样无法直接导出训练集样本,因此手动实现有放回采样才能记录对应训练数据。
  2. r值计算调整:你提到“皮尔逊r代表决定系数”,这里存在概念混淆——决定系数是皮尔逊r的平方(R² = r²),如果实际需求是R²,只需将代码中current_r替换为current_r ** 2即可。
  3. 随机种子设置:每次迭代使用不同的random_state,保证采样的多样性;若需要复现结果,可固定种子序列。
  4. 迭代次数控制:n_iterations可根据计算资源调整,次数越多找到最优样本的概率越高,但耗时也会增加。

内容的提问来源于stack exchange,提问作者Mario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 02:37:41