当前位置: 首页 > 面试题库 >

在Scikit Learn中运行SelectKBest之后获取功能名称的最简单方法

葛磊
2023-03-14
问题内容

我想进行监督学习。

到目前为止,我知道对所有功能都进行监督学习。

但是,我也想用K最佳功能进行实验。

我阅读了文档,发现在Scikit中学习有SelectKBest方法。

不幸的是,我不确定找到这些最佳功能后如何创建新的数据框:

假设我要进行5种最佳功能的实验:

from sklearn.feature_selection import SelectKBest, f_classif
select_k_best_classifier = SelectKBest(score_func=f_classif, k=5).fit_transform(features_dataframe, targeted_class)

现在,如果我要添加下一行:

dataframe = pd.DataFrame(select_k_best_classifier)

我将收到一个没有功能名称的新数据框(仅索引从0到4)。

我应该将其替换为:

dataframe = pd.DataFrame(fit_transofrmed_features, columns=features_names)

我的问题是如何创建features_names列表?

我知道我应该使用:select_k_best_classifier.get_support()

返回布尔值数组。

数组中的true值表示右列中的索引。

我应该如何将此布尔数组与可以通过该方法获得的所有要素名称的数组一起使用:

feature_names = list(features_dataframe.columns.values)

问题答案:

您可以html" target="_blank">执行以下操作:

mask = select_k_best_classifier.get_support() #list of booleans
new_features = [] # The list of your K best features

for bool, feature in zip(mask, feature_names):
    if bool:
        new_features.append(feature)

然后更改功能的名称:

dataframe = pd.DataFrame(fit_transofrmed_features, columns=new_features)


 类似资料:
  • 问题内容: 有没有一种更干净的方法来获取Swift中数组的最后两项?通常,我尝试避免使用这种方法,因为与索引一一对应很容易。(在此示例中,使用Swift 1.2。) 我希望有一些更接近Python的便利。 问题答案: 使用Swift 5时,您可以根据需要选择以下模式之一,以便从数组的最后两个元素中获取新的数组。 #1。使用数组的 使用Swift,符合协议的对象具有方法。数组具有以下声明: 返回一个

  • 问题内容: 在Java中获取字符串的最后一个单词的最简单方法是什么?您可以假设没有标点符号(仅字母字符和空格)。 问题答案:

  • 如何在测试用例的运行时获得当前运行套件的名称?我正在使用下面显示的一段代码来获取当前套件名称。 Listeners类: 在这种情况下,我无法获得套件名称--它没有执行。有人能帮我查一下套房的名字吗?

  • 本文向大家介绍Javascript获取表单名称(name)的方法,包括了Javascript获取表单名称(name)的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Javascript获取表单名称(name)的方法。分享给大家供大家参考。具体如下: 下面的代码通过表单的name属性获得表单名称 上述代码运行结果如下: 希望本文所述对大家的javascript程序设计有所帮助。

  • 我有一些使用下面某个模块的网页抓取Python代码 硒 bs4 MySQLdb 调度器 在网上或云上运行代码的最简单方法或平台是什么?

  • 问题内容: 有没有办法获取Java中当前正在执行的方法的名称? 问题答案: 从技术上讲这将起作用… 但是,将在编译时创建一个新的匿名内部类(例如)。因此,这将为.class每个部署此技巧的方法创建一个文件。另外,在运行时每次调用时都会创建一个其他未使用的对象实例。因此,这可能是可以接受的调试技巧,但确实会带来大量开销。 该技巧的一个优点是返回值可用于检索方法的所有其他信息,包括注释和参数名称。这样