如何在sklearn中添加将文件名传递给我的自定义转换器的可能性?

时间:2018-06-14 19:10:05

标签: python scikit-learn

大家好! 我是机器学习和sklearn的新手(也不是一个强大的程序员)。 我目前正在制作电子邮件分类器,我想为CountVectorizer提供的功能添加一些其他功能。所以我构建了一个这样的自定义变换器:

class ExtraFeaturesTransformer(BaseEstimator, TransformerMixin):

    def fit(self, X, y=None):
        return self

    def transform(self, X):
        features = []
        for x in X:
            features.append([....])

        return features

然后我结合了这些功能

vectorizer = CountVectorizer(input='filename')

combined_features = FeatureUnion([("extra_features", ExtraFeaturesTransformer()), ("word_feactures", vectorizer)])
X = combined_features.fit_transform(filenames) 

结果我的自定义变换器处理像X这样的文件名(显然)。如何让它像CountVectorizer一样工作,它有参数input =' filename'?

我试着查看CountVectorizer源代码(对我来说没什么意义),并将VectorizerMixin添加到我的变换器继承的类列表和self.input到init。但是我被困住了,不知道接下来该做什么。

1 个答案:

答案 0 :(得分:1)

解决方案是定义__init__方法,并将除了通常{{1}之外计划在fit / transform函数中使用的任何参数传递给它输入。见this part of CountVectorizer code for inspiration

P.S。它看起来像一个普通的python问题,而不是一个sklearn问题。 P.P.S.我不确定你是否需要从X派生,除非你计划与该类相关的任何函数