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

如何在Python中基于RFECV特征排名筛选数据集列?

用Python实现保留RFECV排名为1的特征列

直接用pandas就能高效搞定,步骤清晰明了:

  • 读取两个CSV文件
  • 从排名文件中筛选出所有排名为1的特征名(或对应索引)
  • 基于筛选结果提取数据集的目标列
  • 保存处理后的数据集

具体代码实现

情况1:排名文件包含特征名和对应排名(推荐格式)

假设排名CSV有两列:feature_name(特征名称)和rank(RFECV排名),数据集CSV的首行是特征名(与排名文件的特征名一一对应):

import pandas as pd

# 读取原始数据集和排名文件
dataset = pd.read_csv('你的数据集文件名.csv')
rank_df = pd.read_csv('你的RFECV排名文件名.csv')

# 筛选出排名为1的特征名称列表
selected_features = rank_df[rank_df['rank'] == 1]['feature_name'].tolist()

# 若数据集包含样本标识列(如id列),需手动将其加入筛选列表
# 示例:假设第一列是id列
# selected_features.insert(0, dataset.columns[0])

# 提取目标特征列
filtered_dataset = dataset[selected_features]

# 保存结果到新CSV
filtered_dataset.to_csv('筛选后的数据集.csv', index=False)

情况2:排名文件仅存排名值(顺序与数据集特征列一致)

如果排名文件只有纯排名数值,且顺序和数据集的特征列顺序完全对应,可以用索引筛选:

import pandas as pd
import numpy as np

dataset = pd.read_csv('你的数据集文件名.csv')
# 读取排名数组(假设每行一个排名值)
ranks = np.loadtxt('你的排名文件名.csv', dtype=int)

# 找到排名为1的特征列索引
selected_indices = np.where(ranks == 1)[0]

# 提取对应列
filtered_dataset = dataset.iloc[:, selected_indices]

# 保存结果
filtered_dataset.to_csv('筛选后的数据集.csv', index=False)

关于你提到的转置思路

其实没必要转置,用pandas的布尔索引或numpy的索引定位更直接。尤其是处理1500+列的数据集,pandas的表格操作效率更高,代码也更易读维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:27:37