是否存在类似sklearn.PolynomialFeatures的字符串交互特征生成函数?若无为如何实现?
寻找字符串版的PolynomialFeatures等价函数
我们知道
sklearn.PolynomialFeatures可以生成数值向量的多项式和交互特征,示例如下:import sklearn X = [[1,2,3]] G = sklearn.PolynomialFeatures(degree = 3, interaction_only = True, bias = False) print(G.fit_transform(X)) # 输出:array([[1., 2., 3., 2., 3., 6., 6.]])现在想知道是否存在可处理字符串的等价函数?若输入数组为
X = [['a','b','c']],该函数需输出array([['a','b','c','ab','ac','bc','abc']]),且支持任意输入向量。若不存在此类函数,应如何创建?
首先明确说哈,scikit-learn里没有现成的字符串版等价函数——毕竟PolynomialFeatures是专门为数值特征设计的,核心是做乘法运算,不是字符串拼接。不过完全不用担心,我们可以自己实现一个功能完全匹配的版本,逻辑其实很清晰:
一、核心思路
和数值版的逻辑对应:
- 按指定的
degree生成不同长度的特征索引组合 - 对每个组合里的字符串进行拼接,得到交互特征
- 整理成和输入格式匹配的二维数组输出
二、自定义实现代码
我们可以借助itertools里的combinations(处理无重复的交互特征)和product(处理允许重复的多项式特征)来实现,代码如下:
import numpy as np from itertools import combinations, product def string_polynomial_features(X, degree=3, interaction_only=True, bias=False): # 先统一输入格式为二维数组 X = np.array(X) if X.ndim == 1: X = X.reshape(1, -1) result = [] for sample in X: current_features = [] # 处理bias项(对应数值版里的偏置,这里默认为空字符串,可按需开启) if bias: current_features.append('') # 遍历从1到设定的degree的特征组合长度 for d in range(1, degree + 1): # 如果是interaction_only模式,只生成不同特征的组合(无重复索引) if interaction_only: feature_indices = combinations(range(len(sample)), d) else: # 非interaction_only模式,允许重复使用同一特征(比如生成'aa'这种) feature_indices = product(range(len(sample)), repeat=d) # 对每个索引组合拼接字符串 for indices in feature_indices: combined_str = ''.join([sample[idx] for idx in indices]) current_features.append(combined_str) result.append(current_features) return np.array(result, dtype=str)
三、测试你的示例
用你给出的测试用例跑一下,完全符合预期:
X = [['a','b','c']] output = string_polynomial_features(X, degree=3, interaction_only=True, bias=False) print(output) # 输出:array([['a', 'b', 'c', 'ab', 'ac', 'bc', 'abc']], dtype='<U3')
四、额外功能说明
这个自定义函数还支持数值版的其他参数逻辑:
- 多样本输入:比如
X = [['a','b'], ['x','y']],会分别输出每个样本的特征组合 - 关闭interaction_only:设置
interaction_only=False后,会生成包含重复特征的组合,比如输入['a','b']、degree=2时,会输出['a','b','aa','ab','ba','bb'] - bias参数:开启后会在每个样本的特征列表开头添加一个空字符串,对应数值版里的偏置项
内容的提问来源于stack exchange,提问作者A. Bohyn
相关产品推荐
相关产品推荐

