【发布时间】:2019-02-08 11:43:45
【问题描述】:
我使用了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
但它什么也没返回。那么,我如何才能真正了解选择了哪些列?
【问题讨论】:
-
@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]]) -
这是我试过的:
X_selected_df = pd.DataFrame(X_new, columns=[X.columns[i] for i in range(len(X.columns)) if SelectFromModel.get_support()[i]]),但得到了AttributeError: 'numpy.ndarray' object has no attribute 'columns'。 -
您使用的是 csv 数据文件吗?
-
不,我正在使用
iris = load_iris()。没有 csv。
标签: python pandas numpy scikit-learn