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

使用RandomForestRegressor时出现Not Fitted错误的解决方法咨询

解决RandomForestRegressor的Not Fitted错误并输出特征重要性

嘿,我来帮你搞定这个问题!出现NotFittedError的核心原因很明确:你还没让随机森林回归器完成训练(也就是没调用fit()方法),就急着去拿特征重要性了。毕竟模型得先从数据里学到东西,才能告诉你哪些特征更重要嘛~

先给你一套完整的可运行代码,涵盖从数据准备到输出排序后特征重要性的全流程,你可以参考着调整自己的代码:

import numpy as np
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split

# 生成符合你需求的模拟数据:4个特征变量,1个浮点型目标变量
X, y = make_regression(n_samples=1000, n_features=4, random_state=42)

# 划分训练集和测试集(机器学习常规操作,避免过拟合)
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)

# 重中之重:调用fit()方法让模型在训练数据上完成拟合!
# 这一步绝对不能省略,否则模型就是个空架子,拿不到任何训练后的属性
rf_reg.fit(X_train, y_train)

# 现在可以安全地获取特征重要性并排序了
feature_importances = rf_reg.feature_importances_
# 用argsort拿到按重要性升序排列的索引,再反转成降序
sorted_indices = np.argsort(feature_importances)[::-1]
sorted_importances = feature_importances[sorted_indices]

# 格式化输出结果
print("特征重要性(按降序排列):")
for idx, importance in zip(sorted_indices, sorted_importances):
    print(f"特征{idx+1}: {importance:.4f}")

另外,再给你几个排查问题的小要点:

  • 检查代码里有没有漏掉fit()调用:这是最常见的原因,一定要确保在访问feature_importances_之前执行了model.fit(X_train, y_train)
  • 注意拼写细节:feature_importances_是双下划线结尾,别漏写;fit()是小写开头,别写成大写的Fit()
  • 如果是在函数或类里实现的,要确认模型实例没有被重复初始化:比如你在调用fit()之后,又重新创建了一个新的RandomForestRegressor实例,那之前的训练结果就丢了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:16:14