是否有类似于sklearn.PolynomialFeatures的python函数,但对于字符串?

问题描述 投票:0回答:1

sklearn.PolynomialFeatures函数生成矢量的多项式和交互特征。例如:

>>> X = [[1,2,3]]
>>> G = sklearn.PolynomialFeatures(degree = 3, interaction_only = True, bias = False)
>>> G.fit_transform(X)
>>> print(G)
>>>
array([[1., 2., 3., 2., 3., 6., 6.]])

是否有一个等效函数可以对字符串起作用,所以如果输入数组是X = [['a','b','c']]函数将输出array([['a','b','c','ab','ac','bc','abc']])并且该函数可以采用任何输入向量?如果不存在这样的功能,您对如何创建它有想法吗?

python string scikit-learn polynomials
1个回答
2
投票

似乎您正在寻找字符串输入列表的superset。尽管要使用itertools / itertools结构(允许将转换器包含在管道中),但是使用fit可以很容易地实现,但是可以定义继承自transform的转换器。否则,只需使用TransformerMixin方法中包含的代码:

transform

from sklearn.base import TransformerMixin
from itertools import combinations, chain

class NSuperset(TransformerMixin):
    def __init__(self, n):
        self.n = n

    def fit(self, X):
        return self

    def transform(self, X):
        superset = [[''.join(c) for x in X for c in combinations(x, r=i)] 
                    for i in range(1,self.n+1)]
        return list(chain.from_iterable(superset))
© www.soinside.com 2019 - 2024. All rights reserved.