Python DataFrameMapper是否保证特征向量对齐?

Python DataFrameMapper是否保证特征向量对齐?,python,pandas,sklearn-pandas,Python,Pandas,Sklearn Pandas,我的项目涉及建立一个标题和一些度量之间的关系 我依靠pandas和sklearn完成这项工作,并了解sklearn pandas的特点,因为我发现DataFrameMapper可以方便地处理特征提取步骤,而不是链接许多特征联合 简言之,这类似于: dfm = DataFrameMapper([ ('title', CountVectorizer()), (['width', 'height', 'length', 'weight'], StandardScaler()), ])

我的项目涉及建立一个标题和一些度量之间的关系

我依靠pandas和sklearn完成这项工作,并了解sklearn pandas的特点,因为我发现DataFrameMapper可以方便地处理特征提取步骤,而不是链接许多特征联合

简言之,这类似于:

dfm = DataFrameMapper([
    ('title', CountVectorizer()),
    (['width', 'height', 'length', 'weight'], StandardScaler()),
])
然后我想在这样的管道上使用它:

p = make_pipeline(dfm, LinearRegression())
data = pd.read_csv("data.csv")  # a couple hundred thousands of records.
train_sample = data[:100000]  # arbitrary sample.
test_sample = data[100000:]  # arbitrary test.
p.fit(train_sample, train_sample['target'])
p.predict(test_sample)
这种方法看起来应该有效。但我发现它并没有保持我的功能的“一致性”

当我尝试像这样训练这个简单的模型时:

p = make_pipeline(dfm, LinearRegression())
data = pd.read_csv("data.csv")  # a couple hundred thousands of records.
train_sample = data[:100000]  # arbitrary sample.
test_sample = data[100000:]  # arbitrary test.
p.fit(train_sample, train_sample['target'])
p.predict(test_sample)
它失败于:

ValueError: shapes (1,7) and (18,) not aligned: 7 (dim 1) != 18 (dim 0)
我发现这是因为训练样本比测试样本“大”,所以CountVectorizer词汇表包含的功能更少。但直觉上,我希望管道(及其内部的DataFrameMapper)能够填充可能出现的缺失值

在这一点上,我不知道这是否是由于我使用的DFM错误。或者如果我错过了一些愚蠢的配置步骤


有人可以在这里指出我的错误吗?

应该是:
p.fit(train\u sample.drop('target',axis=1),train\u sample['target'))
?是的,你是对的。编辑了问题。实际上,删除目标列没有任何区别。。。要进行新编辑。为什么要在选择器中重复
['width','height','width','weight','weight']
中的
width
height
?如果不使用DFM,即使用
FeatureUnion
,是否会出现相同的错误?你能提供完整的回溯吗?