‘numpy.ndarray‘ object has no attribute ‘get_support‘解决方案

我在使用SelectKBest进行特征选择的时候,想要查看我最终选取的是哪些特征(即想看我选取的特征的列标签),但是用如下方法时,出现了报错

from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
iris = load_iris()
# print(iris)
X, y = iris.data, iris.target
print(X.shape)
X_new = SelectKBest(chi2, k=2).fit_transform(X, y).get_support(indices=True)
print(X_new.shape)

‘numpy.ndarray‘ object has no attribute ‘get_support‘解决方案_第1张图片
我之后上网找到了解决方法,网页链接:https://stackoverflow.com/questions/50457928/numpy-ndarray-object-has-no-attribute-get-support-error-message-after-runnin

具体原因如下:
就是get_support()这个方法必须直接使用在选择器上,但是SelectKBest(chi2, k=2).fit_transform(X, y)这个方法生成的是ndarray变量。那么怎么改呢?
思路就是把选择器单独命名为一个变量

from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
iris = load_iris()
# print(iris)
X, y = iris.data, iris.target
print(X.shape)
selector = SelectKBest(chi2, k=2)
X_new = selector.fit_transform(X, y)
print(selector.get_support(indices=True))
print(X_new.shape)

我打印selector.get_support(indices=True)可以得到结果[2 3],说明这个方法选择的是第2,3个变量。

你可能感兴趣的:(python,机器学习)