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

决策树回归特征重要性输出报错及DataFrame保存问题求助

问题分析与解决方案

核心错误原因

你使用的是回归树模型(DecisionTreeRegressor),但交叉验证时指定了分类任务专属的评估指标scoring='accuracy'。accuracy仅适用于目标变量为离散类别的分类场景,而你的y_airbnb是连续值(回归任务),因此触发ValueError: continuous is not supported。

特征重要性的DataFrame生成逻辑本身没问题,报错是因为交叉验证的评估环节失败,导致后续循环输出伴随错误信息。

修正后的代码

步骤1:替换回归任务的评估指标

回归任务常用评估指标包括'r2'、'neg_mean_squared_error'、'neg_mean_absolute_error'等,以下以'r2'为例:

from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import cross_validate
import pandas as pd

dtr = DecisionTreeRegressor(random_state=42)
# 训练基准模型
model = dtr.fit(X_airbnb, y_airbnb)

# 生成单模型特征重要性并保存
feat_importances = pd.DataFrame(model.feature_importances_, 
                                index=X_airbnb.columns, 
                                columns=["Importance"])
feat_importances.sort_values(by='Importance', ascending=False, inplace=True)
feat_importances.to_csv('single_model_feature_importances.csv')  # 保存到本地文件

# 修正交叉验证的评估指标
output = cross_validate(dtr, X_airbnb, y_airbnb, cv=2, 
                        scoring='r2', return_estimator=True)

# 遍历交叉验证模型,生成并保存每个模型的特征重要性
for idx, estimator in enumerate(output['estimator']):
    print(f"Features sorted by their score for estimator {idx}:")
    feature_importances = pd.DataFrame(estimator.feature_importances_,
                                       index=X_airbnb.columns,
                                       columns=['importance']).sort_values('importance', ascending=False)
    print(feature_importances)
    # 保存每个交叉验证模型的特征重要性
    feature_importances.to_csv(f'cv_estimator_{idx}_feature_importances.csv')

关键说明

  • 任务匹配指标:严格区分分类/回归任务的评估指标,避免跨场景误用。
  • 特征重要性保存:通过to_csv()或to_excel()可直接将DataFrame导出为本地文件,解决无法保存的问题。
  • 交叉验证结果:修正评估指标后,output['test_score']会返回各折的有效评分,不再出现nan。

内容的提问来源于stack exchange,提问作者nic.o

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:25:26