我正在使用帶有一些微陣列的 sklearn 和 Pandas,并且我有一個(gè) Pandas DataFrame,其中每一列都已命名。所以我正在對(duì)數(shù)據(jù)框做一些轉(zhuǎn)換,本質(zhì)上是特征選擇。data = pd.read_csv("data.txt")print(data)導(dǎo)致 1007_s_at 1053_at ... AFFX-TrpnX-5_at AFFX-TrpnX-M_at0 3.96932 2.52634 ... 2.09691 1.991231 4.10452 2.43457 ... 2.28103 2.064462 3.95308 2.36736 ... 2.11059 1.806183 3.99712 2.55388 ... 2.13354 1.919084 3.95279 2.21484 ... 2.22531 2.03342.. ... ... ... ... ...96 3.79560 2.74194 ... 2.01703 2.0374397 3.79817 2.47422 ... 2.12385 2.0718898 3.84186 2.59329 ... 2.16435 1.69897[99 rows x 22283 columns]正如我們所見,每一列都有一個(gè)名稱。然后我用 VarianceThreshold 方法刪除了一些列data = VarianceThreshold(0.04).fit_transform(data)print(data)print("After Variance Threshold data shape: ", data.shape)所以新數(shù)據(jù)看起來像[[4.1835 2.20952 2.41664 ... 2.21748 2.69197 2.41996] [3.82478 2.2878 1.69897 ... 1.87506 2.09691 2.35411] [4.1503 2.32015 2.35793 ... 2.01284 2.2833 2.15534] ... [3.85576 3.26694 2.71684 ... 2.68305 3.18298 2.83378] [3.25912 2.04922 2.58092 ... 2.0607 2.66932 2.42325] [3.34044 2.24551 2.60097 ... 2.03743 2.31806 2.35984]]After Variance Threshold data shape: (99, 5002)現(xiàn)在,數(shù)據(jù)是一個(gè) numpy 數(shù)組,我丟失了原始數(shù)據(jù)幀中保留的每一列的標(biāo)題。有沒有辦法讓它們與熊貓/numpy?
1 回答

幕布斯6054654
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用get_support獲取掩碼而不是結(jié)果:
In [11]: df = pd.DataFrame([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]], columns=list("ABCD"))
In [12]: df
Out[12]:
A B C D
0 0 2 0 3
1 0 1 4 3
2 0 1 1 3
In [13]: VarianceThreshold().fit(df).get_support()
Out[13]: array([False, True, True, False])
In [14]: df.loc[:, VarianceThreshold().fit(df).get_support()]
Out[14]:
B C
0 2 0
1 1 4
2 1 1
在你的例子中:
df.loc[:, VarianceThreshold(0.04).fit(data).get_support()]
添加回答
舉報(bào)
0/150
提交
取消