如何从sklearn.feature_selection.SelectKBest获取每个功能的分数?

Bla*_*gon 1 python data-analysis feature-selection scikit-learn

我试图得到我的数据集的所有功能的分数.

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)
Run Code Online (Sandbox Code Playgroud)

在X的第一行之前有字符串格式的"功能名称",但我得到"输入包含NaN,无穷大或者对于dtype('float64')来说太大的值"错误.所以,现在X只包含数据,y包含目标值(1,-1).

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

谢谢

Dan*_*ina 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_
Run Code Online (Sandbox Code Playgroud)


你的问题

直接使用时.fit_transform(features, target),不会存储选择器,而是返回所选功能.但是,分数是选择器的属性.为了得到它,你必须使用.fit(features, target).一旦安装了选择,就可以通过调用获得所选功能selector.transform(features),如代码avobe中所示.

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


链接