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

如何限制Sklearn随机森林feature_importances_输出的小数位数

自定义限制Sklearn随机森林feature_importances_输出小数位数的实现方法

rf.feature_importances_返回的是NumPy浮点型数组,默认输出全精度浮点数,不会自动截断小数位,可根据你的使用场景选择对应可直接运行的方案:

方案1:仅控制打印展示效果,不修改原始数值

适合控制台打印、表格预览场景,不会改动原始计算结果:

  • 如果需要直接打印数组时统一小数位,配置NumPy全局打印规则即可,suppress=True参数可同时关闭科学计数法显示:
import numpy as np
# 按需修改precision参数调整保留的小数位数,示例为保留4位
np.set_printoptions(precision=4, suppress=True)
print(rf.feature_importances_)
  • 如果需要逐行拼接特征名输出自定义表格,直接用字符串格式化控制小数位:
# 替换为你实际使用的特征名列表
feature_names = [f"特征_{i}" for i in range(rf.feature_importances_.shape[0])]
# 逐行打印固定小数位的结果,:.4f代表保留4位小数,可按需修改
for feat_name, imp_score in zip(feature_names, rf.feature_importances_):
    print(f"{feat_name:15} | 重要性得分:{imp_score:.4f}")

方案2:生成固定小数位的结果用于表格导出/后续处理

如果需要把固定精度的结果存入表格、导出CSV,可先生成精度处理后的数组副本,不影响原始模型属性:

import numpy as np
import pandas as pd

# 生成保留4位小数的特征重要性副本
imp_rounded = np.round(rf.feature_importances_, decimals=4)

# 构建Pandas表格
imp_table = pd.DataFrame({
    "特征名": feature_names,
    "重要性得分": rf.feature_importances_
})

# 打印Pandas表格时固定显示4位小数
print(imp_table.style.format({"重要性得分": "{:.4f}"}))

# 导出CSV时统一保留4位小数
imp_table.to_csv("特征重要性结果.csv", float_format="%.4f", index=False)

方案3:可视化绘图时自定义标注小数位

如果绘图时需要调整柱子上标注的数值小数位,直接在标注接口指定格式化规则即可,以Matplotlib条形图为例:

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 8))
bars = plt.barh(feature_names, imp_rounded)
# fmt参数控制标注保留的小数位,示例为保留4位
plt.bar_label(bars, fmt="%.4f", padding=3)
plt.tight_layout()
plt.show()

注意:不要直接修改rf.feature_importances_原始属性的数值,所有精度调整优先用格式化展示、生成副本的方式实现,避免后续需要复用全精度计算结果时出现误差。网上检索到的代码无法运行,大多是混淆了「修改NumPy打印配置」「字符串格式化输出」「修改数组实际值」三种场景,方法和使用场景不匹配导致的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:45:59