在 sklearn.feature_selection 之后过滤 DataFrame

Filter DataFrame after sklearn.feature_selection

我降低了数据集的维度 (pandas DataFrame)。

X = df.as_matrix()
sel = VarianceThreshold(threshold=0.1)
X_r = sel.fit_transform(X) 

然后我想取回减少的 DataFrame(即只保留 ok 列)

我只找到了这种丑陋的方法,效率很低,你有什么更干净的想法吗?

    cols_OK = sel.get_support()  # which columns are OK?
    c = list()
    for i, col in enumerate(cols_OK):
        if col:
            c.append(df.columns[i])
    return df[c]

我想你需要 if return mask:

cols_OK = sel.get_support()
df = df.loc[:, cols_OK]

如果 return 索引:

cols_OK = sel.get_support()
df = df.iloc[:, cols_OK]