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

运行Python代码提示'numpy.ndarray' object has no attribute 'columns'如何解决?

报错原因与解决方案

错误原因

该报错触发在index = X_train.columns这行代码:你当前的X_train是numpy的ndarray格式,只有pandas DataFrame对象才有columns属性,ndarray本身不存在该属性。不需要额外将DataFrame转换为ndarray格式,scikit-learn的模型训练同时支持DataFrame和ndarray两种输入格式,转成ndarray反而会丢失特征列名信息,才会导致本次报错。

解决方案

你可以根据自己的场景任选以下一种方案修复:

  • 方案1:保留训练特征为DataFrame格式
    检查你数据集拆分前的代码,删除类似X = 特征df.values的操作,直接用DataFrame格式的特征矩阵做训练集测试集拆分,这样拆分得到的X_train本身就是DataFrame,原有代码不需要修改即可正常运行。
  • 方案2:手动传入特征名列表
    如果你已经将特征转为了ndarray,且提前留存了特征名的列表(假设变量名为feature_list),直接把设置index的代码替换为:
    importance = pd.DataFrame({'Importance': rf_tuned.feature_importances_*100},
                         index = feature_list)
    
  • 方案3:将ndarray转回DataFrame
    如果你需要把现有X_train转回DataFrame后续使用,可执行以下代码:
    # 替换feature_list为你实际的特征名列表
    X_train = pd.DataFrame(X_train, columns=feature_list)
    importance = pd.DataFrame({'Importance': rf_tuned.feature_importances_*100},
                         index = X_train.columns)
    

内容的提问来源于stack exchange,提问作者Berk Akyıldız

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:24:01