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

Random Forest:如何向稀疏矩阵添加特征及识别特征重要性项

问题解答

1. 稀疏矩阵直接拼接额外特征方案

你可以直接用scipy.sparse.hstack对稀疏矩阵做水平拼接,不需要将BOW稀疏矩阵转为稠密矩阵,能大幅节省大词汇量场景下的内存开销。sklearn的RandomForestClassifier原生支持稀疏矩阵作为输入,无需额外转换。
实现步骤:

  • 导入scipy稀疏矩阵工具
  • 将额外特征提前转为数值型后,转成稀疏矩阵格式
  • 按顺序拼接BOW稀疏矩阵和额外特征稀疏矩阵
    示例代码片段:
from scipy.sparse import hstack, csr_matrix

# 额外特征转数值型,避免模型训练报错
df1['Grp'] = df1['Grp'].astype(int)
df1['Rating'] = df1['Rating'].astype(int)

# 转为稀疏矩阵后拼接
extra_sparse = csr_matrix(df1.values)
X_train_sparse = hstack([bow, extra_sparse])

2. 特征重要性匹配方案

拼接后的稀疏矩阵列顺序和拼接时传入的特征顺序完全一致,只要按拼接顺序构造特征名列表即可直接对应:

  • 用CountVectorizer的get_feature_names_out()方法获取BOW部分的特征名列表
  • 追加额外特征名,顺序和拼接时的额外特征顺序保持一致
  • 用合并后的特征名列表作为特征重要性的索引即可
    示例代码片段:
# 构造完整特征名列表
bow_names = vect.get_feature_names_out().tolist()
extra_names = ['Grp', 'Rating']
all_feature_names = bow_names + extra_names

# 训练后生成特征重要性表
forest = RandomForestClassifier(n_estimators = 500, random_state=0) 
forest.fit(X_train_sparse, y_train)
feature_importances = pd.DataFrame(
    forest.feature_importances_, 
    index = all_feature_names, 
    columns=['importance']
).sort_values('importance', ascending=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:36:01