我正在尝试获取数据集所有功能的分数。
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获取每个功能的分数(尝试使用单变量功能选择)?
感谢
答案 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中看到的那样。
正如我在代码中所评论的那样,您无需转换功能即可获得分数。只要装上它们就足够了。
链接