sklearn特征选择 保留特征名称

经过特征选择后,数据变成了array类型,并失去了特征名称,查询资料后没有找到直接保留特征名称的方法。但是有一个get_support函数,可以保留提取出来的特征索引。
于是就通过这个方法自己加几句代码,取出特征选择后的特征名称。

1.方差过滤
from sklearn.feature_selection import VarianceThreshold  # 方差过滤
selector = VarianceThreshold()
x_train1 = selector.fit_transform(x_train1)  # 方差过滤
x_test1 = selector.transform(x_test1)  

此时数据变成了array类型,没有保留特征名称。

 保留特征名称
all_name = data.columns.values.tolist()  # 获得所有的特征名称
select_name_index0 = selector.get_support(indices=True)  # 留下特征的索引值,list格式
select_name0 = []
for i in select_name_index0:
    select_name0.append(all_name[i])
2.互信息法
互信息
mic = mutual_info_classif(x_train1, y_train1, random_state=0)
k = mic.shape[0] - sum(mic <= 0)   # 获得与标签列相关的特征列个数
skb = SelectKBest(mutual_info_classif, k=k)  # 特征选择
x_train1 = skb.fit_transform(x_train1, y_train1)
x_test1 = skb.transform(x_test1)
保留特征名称
select_name_index = skb.get_support(indices=True)
select_name = []
for i in select_name_index:
    select_name.append(select_name0[i])
print(select_name)

最终结果便是select_name。
这样就可以把select_name传入graphviz函数里画图啦。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值