擅长:python、mysql、java
<p>ItemSelector()的作用是,根据构造函数中提供的<code>dict</code>(X)从给定的<code>dict</code>(X)中拾取数据,并返回一个一维<code>[n,]</code>数组。在</p>
<p>此类型的<code>[n,]</code>数组没有被<code>FeatureUnion</code>正确处理。<code>FeatureUnion</code>需要从每个内部<code>transformers</code>中的每个维度组成一个数组,其中第一个维度(样本数)应该是一致的,最后可以水平堆叠以组合特征。在</p>
<p>前两个转换器(<code>TfidfVectorizer()</code>)中的第二个操作从ItemSelector获取这个<code>[n,]</code>数组,并输出一个有效的<code>[n,m]</code>类型的数组,其中<code>m = number of features extracted from raw text</code>。在</p>
<p>但是第三个和第四个变压器只包含<strong>个</strong><code>ItemSelector()</code>,所以它输出<strong><code>[n,]</code></strong>数组。这就是错误的原因。在</p>
<p>为了纠正这一点,您应该将<code>ItemSelector</code>的输出重塑为<code>[n,1]</code>。
更改<code>ItemSelector.transform()</code>(<strong>我假设您使用的是来自指定链接的ItemSelector代码</strong>):</p>
<p><strong>原版</strong></p>
<pre><code>data_dict[self.key]
</code></pre>
<p><strong>新增</strong></p>
^{pr2}$
<p><code>reshape()</code>将把你的<code>[n,]</code>格式化为<code>[n,1]</code>,然后FeatureUnion可以使用它来正确地附加数据。在</p>