如何从sklearn.feature_selection.SelectKBest中获取每个要素的分数?

时间:2015-09-21 17:54:06

标签: python scikit-learn data-analysis feature-selection

我正在尝试获取数据集所有功能的分数。

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获取每个功能的分数(尝试使用单变量功能选择)?

感谢

1 个答案:

答案 0 :(得分:9)

解决方案

你必须做这样的事情。

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)来获取所选功能,正如您在代码avobe中看到的那样。

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


链接