我使用了here所示的基于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 :(得分:0)
将数据转换为csv文件后,您将需要使用pd.read_csv
将该文件转换为数据框。
然后您可以使用columns
属性访问列。
此外,您可以使用to_list
属性将列作为列表获取。
或者,您可以使用艾哈迈德的方法:
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)
编辑:OP通过使用model.get_support
而不是SelectFromModel.get_support
来解决了这个问题