Skip to main content
 首页 » 编程设计

python之如何从 sklearn.feature_selection.SelectKBest 获取每个特征的分数

2025年05月04日9mfryf

我正在尝试获取我的数据集的所有特征的分数。

file_data = numpy.genfromtxt(input_file) 
y = file_data[:,-1] 
X = file_data[:,0:-1] 
 
x_new = SelectKBest(chi2, k='all').fit_transform(X,y) 

在 X 的第一行具有字符串格式的“特征名称”之前,但我收到“输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值”错误。因此,现在 X 仅包含数据,而 y 包含目标值 (1,-1)。

如何从 SelectKBest 中获取每个特征的分数(尝试使用单变量特征选择)?

谢谢

请您参考如下方法:

解决方案

你只需要做这样的事情。

file_data = numpy.genfromtxt(input_file) 
y = file_data[:,-1] 
X = file_data[:,0:-1] 
 
selector = SelectKBest(chi2, k='all').fit(X,y) 
x_new = selector.transform(X) # not needed to get the score 
scores = selector.scores_ 


你的问题

当您直接使用 .fit_transform(features, target) 时,选择器 不会被存储,您将返回选择的特征。但是,分数是选择器 的一个属性。为了得到它,你必须使用.fit(features, target)。安装好选择器后,您可以通过调用selector.transform(features) 获取选定的功能,如您在代码中所见避免。

正如我在代码中评论的那样,您无需转换特征即可获得分数。只需安装它们就足够了。


链接