假设我有一个像这样的数据框:
Height Speed
0 4.0 39.0
1 7.8 24.0
2 8.9 80.5
3 4.2 60.0
然后,通过一些特征提取,我得到了:
0 39.0
1 24.0
2 80.5
3 60.0
但是,我希望它成为一个仍存在列索引的数据框。您将如何获得以下内容?
Speed
0 39.0
1 24.0
2 80.5
3 60.0
我正在寻找一个答案,该答案将原始列与新列进行比较,并确定新列必须命名为Speed。换句话说,它不应该只是将新列重命名为“速度”。
这里是特征提取:假设 X 是原始数据帧,而 X1 是缺少列名称的返回数组。
svc = SVC(kernel="linear")
rfecv = RFECV(estimator=svc, step=1, cv=StratifiedKFold(2),
scoring='accuracy')
X1=rfecv.fit_transform(X, y)
谢谢
编辑:
对于我收到的评论,我将澄清我的歧义。我相信上面的特征提取方法需要一个数据框或一个序列/数组。然后,它返回一个数组。我正在向其中传递数据框。该数据框包含列标签和数据。但是,它返回缺少列名称的数组。另一个警告是,这通常必须模棱两可。我无法明确命名列,因为列将在程序中更改。它可能会返回两个数组,四个数组,……我正在寻找一种将原始数据帧与特征提取后给定的数组进行比较的方法,并意识到新数组是原始数据帧的“子集”。然后,用原始列名称进行标记。让我知道您对此的想法!抱歉,谢谢您的帮助。
答案 0 :(得分:1)
RFECV经过调整后,具有名为support_
的属性,该属性是所选要素的布尔蒙版。您可以通过执行以下操作来获取所选功能的名称:
selected_cols = original_df.columns[rfecv.support_]
轻松的豌豆!