如何在sklearn中获取RandomForestRegressor随机森林的训练偏差
sklearn RandomForestRegressor训练偏差计算方案
不需要重写任何相关函数,可直接通过sklearn原生接口实现
你要计算训练偏差的核心是获取模型在训练数据集上的预测结果,和训练集真实标签做误差计算即可,具体操作步骤如下:
- 训练模型时留存好用来拟合的训练特征矩阵
X_train和对应的训练真实标签y_train - 完成
fit()训练后,直接调用训练好的模型的predict()方法,传入X_train得到训练集预测结果 - 用训练集真实标签和训练集预测结果,按照你需要的偏差指标(MSE、MAE、RMSE等)计算得到训练偏差
参考实现代码如下:
from sklearn.ensemble import RandomForestRegressor from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split import numpy as np # 示例数据生成,可替换为你自己的数据集 X = np.random.rand(1000, 5) y = np.random.rand(1000) # 拆分训练集、测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 初始化并训练模型 rf_reg = RandomForestRegressor(n_estimators=100, random_state=42) rf_reg.fit(X_train, y_train) # 计算训练偏差(此处以均方误差MSE为例,可替换为你需要的偏差指标) y_train_pred = rf_reg.predict(X_train) train_bias = mean_squared_error(y_train, y_train_pred) # 计算测试偏差 y_test_pred = rf_reg.predict(X_test) test_bias = mean_squared_error(y_test, y_test_pred) print(f"训练偏差(MSE): {train_bias:.4f}") print(f"测试偏差(MSE): {test_bias:.4f}")
补充说明:sklearn所有有监督学习模型的fit()方法都只会返回模型本身,用来支持链式调用,预测操作统一通过predict()方法实现,不管是训练集还是测试集的预测结果,都通过该方法传入对应特征矩阵获取即可。
内容的提问来源于stack exchange,提问作者RaphaelSun
相关产品推荐
相关产品推荐

