擅长:python、mysql、java
<p>可以对分类列使用<code>sklearn_pandas.CategoricalImputer</code>。详细信息:</p>
<p>首先,(从使用Scikit Learn和TensorFlow进行机器学习一书中)您可以有用于数字和字符串/分类特性的子管道,其中每个子管道的第一个转换器是一个选择器,它接受列名称列表(而<code>full_pipeline.fit_transform()</code>接受pandas数据帧):</p>
<pre><code>class DataFrameSelector(BaseEstimator, TransformerMixin):
def __init__(self, attribute_names):
self.attribute_names = attribute_names
def fit(self, X, y=None):
return self
def transform(self, X):
return X[self.attribute_names].values
</code></pre>
<p>然后,可以将这些子管道与<code>sklearn.pipeline.FeatureUnion</code>组合,例如:</p>
<pre><code>full_pipeline = FeatureUnion(transformer_list=[
("num_pipeline", num_pipeline),
("cat_pipeline", cat_pipeline)
])
</code></pre>
<p>现在,在<code>num_pipeline</code>中可以简单地使用<code>sklearn.preprocessing.Imputer()</code>,但在<code>cat_pipline</code>中,可以使用<code>sklearn_pandas</code>包中的<code>CategoricalImputer()</code>。</p>
<p><strong>注意:</strong><code>sklearn-pandas</code>包可以与<code>pip install sklearn-pandas</code>一起安装,但它是作为<code>import sklearn_pandas</code>导入的</p>