Выбор функций Scikit Learn

После выбора функции запуска в scikit-learn я хотел бы открыть соответствующие переменные, показать мне переменные, которые были выбраны из метода, как это возможно? Команда X.shape просто показывает количество переменных, я хочу видеть имена переменных после выбора функции.

from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2

iris = load_iris()

X, y = iris.data, iris.target

X.shape

X_new = SelectKBest(chi2, k=2).fit_transform(X, y)

X_new.shape

person Geanderson Lenz    schedule 15.09.2017    source источник


Ответы (3)


from sklearn.datasets import load_iris

from sklearn.feature_selection import SelectKBest

from sklearn.feature_selection import chi2

iris = load_iris()

X, y = iris.data, iris.target

X.shape

skb = SelectKBest(chi2, k=2)
skb.fit(X, y)
X_new = skb.transform(X)

X_new.shape

print skb.get_support(indices=True)

Это даст вам индексы выбранных функций.

person Abhishek Thakur    schedule 15.09.2017

Вы можете получить имена, но вам нужно использовать pandas и преобразовать numpy в фреймы данных.

Пример:

from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
import pandas as pd

iris = load_iris()
X = pd.DataFrame(iris.data, columns=iris.feature_names)
y = pd.DataFrame(iris.target)

selector = SelectKBest(chi2, k=2)
selector.fit(X, y)

X_new = selector.transform(X)
X_new.shape

#text format
X.columns[selector.get_support(indices=True)]
#vector format
vector_names = list(X.columns[selector.get_support(indices=True)])

print(vector_names)

#2nd way 
X.columns[selector.get_support(indices=True)].tolist()

Результат:

Index([u'petal length (cm)', u'petal width (cm)'], dtype='object')
['petal length (cm)', 'petal width (cm)']
['petal length (cm)', 'petal width (cm)']
person seralouk    schedule 25.10.2017

После выбора функций, если вы хотите выбрать только те функции, которые были выбраны как значимые («Истинно») для построения новой модели, вы можете сделать следующее:

feats = X.T.tolist()

optimised_feats = []
for i,j in zip(X_new.support_,feats):
    if i == True:
        optimised_feats.append(j)
optimised_feats=np.array(optimised_feats).T
person Ramit    schedule 30.04.2019