Как получить имена столбцов из моего массива?

1

Я использовал L1-функцию, показанную здесь, чтобы выбрать подходящие столбцы из pandas DataFrame X

from sklearn.svm import LinearSVC
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectFromModel

iris = load_iris()
X, y = iris.data, iris.target

lsvc = LinearSVC(C=0.01, penalty="l1", dual=False).fit(X, y)
model = SelectFromModel(lsvc, prefit=True)
X_new = model.transform(X)

Однако мне непонятно, как я могу получить имена столбцов. Поскольку X_new является массивом numpy, я пробовал это:

X_new.dtype.names

Но он ничего не возвращает. Итак, как я могу понять, какие столбцы были выбраны?

  • 0
    Вы видели stackoverflow.com/a/29907472/4764434 ?
  • 0
    @Zero: в моем случае количество функций не совпадает с исходным X и X_new. Я видел это решение, но я не понимаю, что такое «feature_selector.get_support»: X_selected_df = pd.DataFrame(X_new, columns=[X.columns[i] for i in range(len(X.columns)) if feature_selector.get_support()[i]])
Показать ещё 6 комментариев
Теги:
pandas
numpy
scikit-learn

1 ответ

0

После преобразования данных в файл csv вы захотите использовать pd.read_csv чтобы получить этот файл в dataframe.

Затем вы можете использовать атрибут columns для доступа к столбцам.

Кроме того, вы можете использовать атрибут to_list для получения столбцов в виде списка.

В качестве альтернативы вы можете использовать метод Ahmad:

import re

f = open('f.csv','r')

alllines = f.readlines()
columns = re.sub(' +',' ',alllines[0]) #delete extra space in one line
columns = columns.strip().split(',') #split using space

print(columns)

EDIT: вопрос был решен OP с помощью model.get_support вместо SelectFromModel.get_support

Ещё вопросы

Сообщество Overcoder
Наверх
Меню