You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何基于特征列表为数据集样本生成特征向量

特征向量生成方案

有现成的Python库可以实现该需求,也可以用原生Python无依赖实现,两种方案如下:

方案1:使用scikit-learn库实现(推荐)

scikit-learn提供的MultiLabelBinarizer工具就是专门用于多标签二值化的,完全匹配你的需求,适合批量处理大量样本,性能更优。
示例代码:

# 没有安装的话先执行 pip install scikit-learn
from sklearn.preprocessing import MultiLabelBinarizer

# 定义全量特征总集,固定向量的维度和顺序
features = ['a', 'b', 'c', 'd', 'e', 'f']
mlb = MultiLabelBinarizer(classes=features)

s1 = ['a', 'b', 'c']
s2 = ['a', 'c', 'f']

# 生成对应向量,tolist()可将numpy数组转为原生列表
r1 = mlb.transform([s1])[0].tolist()
r2 = mlb.transform([s2])[0].tolist()

print(r1) # 输出:[1, 1, 1, 0, 0, 0]
print(r2) # 输出:[1, 0, 1, 0, 0, 1]

# 批量处理多个样本可直接传样本列表
batch_result = mlb.transform([s1, s2]).tolist()

方案2:原生Python实现(无第三方依赖)

如果不想引入额外的第三方库,自己写实现逻辑也非常简单,通过字典映射特征对应位置即可:

# 定义全量特征总集,生成特征到索引的映射关系
features = ['a', 'b', 'c', 'd', 'e', 'f']
feat_index_map = {feat: idx for idx, feat in enumerate(features)}

def generate_vector(sample):
    # 初始化全0向量
    vector = [0] * len(features)
    for feat in sample:
        # 过滤总集外的异常特征,不需要的话可以去掉判断
        if feat in feat_index_map:
            vector[feat_index_map[feat]] = 1
    return vector

s1 = ['a', 'b', 'c']
s2 = ['a', 'c', 'f']

r1 = generate_vector(s1)
r2 = generate_vector(s2)

print(r1) # 输出:[1, 1, 1, 0, 0, 0]
print(r2) # 输出:[1, 0, 1, 0, 0, 1]

内容的提问来源于stack exchange,提问作者Jack Qiao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:24:01