我正在尝试设置一个Featureisers,它将删除除前10列之外的所有数据库列。数据库共有76列。这个想法是对我想保留的10列应用PolynomialFeatures(1))
,但是我找不到一种方法来巧妙地删除剩下的66列(我想的是类似PolynomialFeatures(0))
的东西,但它似乎不起作用。这个想法是将它们乘以常数0)。问题基本上是2:1)如何告诉DataFrameMapper
将相同的特征化器应用于一系列列(即a_11到a_76);2) 如何告诉DataFrameMapper
应用消除此类列的特征化器
到目前为止,我尝试的(不完整的)代码如下所示。我在问题1(即范围)中表示A_11-A_76,并表示为?准则中的问题2:
from dml_iv.utilities import SubsetWrapper, ConstantModel
from econml.sklearn_extensions.linear_model import StatsModelsLinearRegression
col = ["A_"+str(k) for k in range(XW.shape[1])]
XW_db = pd.DataFrame(XW, columns=col)
from sklearn_pandas import DataFrameMapper
subset_names = set(['A_0','A_1','A_2','A_3','A_4','A_5','A_6','A_7','A_8','A_9','A_10'])
# list of indices of features X to use in the final model
mapper = DataFrameMapper([
('A_0', PolynomialFeatures(1)),
('A_1', PolynomialFeatures(1)),
('A_2', PolynomialFeatures(1)),
('A_3', PolynomialFeatures(1)),
('A_4', PolynomialFeatures(1)),
('A_5', PolynomialFeatures(1)),
('A_11 - A_66', ?)]) ## PROBLEMATIC PART
为什么不从数据帧中删除不需要的列并映射剩下的内容
如果不希望删除列的原因是以后将使用这些列,则可以简单地将删除结果分配给其他变量,从而创建几个更易于操作的子集数据帧:
相关问题 更多 >
编程相关推荐