手动实现机器学习中的one-hot编码

需求:样本的分类特征不唯一

# coding=gbk
def deal():
    # 假设特征类别的全集已经得到(有很多种办法可以得到,自行解决)
    
    TAGS_LIST = ['汽车研发', '其他交通工具制造', '汽车后市场', '停车服务', '车联网', '汽车综合服务', '汽车制造', '汽车交易', '出行服务', '公共交通', '汽车交通支撑服务',
                 '物流服务', '仓储服务', '物流信息化', '配送服务', '物流支持服务', '人工智能基础支撑', '人工智能核心技术·自然语言处理', '人工智能核心技术·计算机视觉',
                 '人工智能通用应用', '人工智能应用场景', '无人机', '机器人', '新材料', '3D打印', '3D扫描', '微纳制造', '激光加工', '新能源汽车', '数字制造', '关键元器件',
                 '高端装备制造', '数据源', '数据基础技术', '数据服务', '大数据通用应用', '大数据行业应用']
                 
    # 假设其中一个样本的特征为a
    a = ['汽车研发', '其他交通工具制造']  
    print("一共有多少种分类: ", len(TAGS_LIST))
    for i in a:
        for x in range(len(TAGS_LIST)):
            if TAGS_LIST[x] == i:
                TAGS_LIST[x] = 1
    for y in range(len(TAGS_LIST)):
        if TAGS_LIST[y] != 1:
            TAGS_LIST[y] = 0
    print("手动处理为onehot的结果为:", TAGS_LIST)
    print("判断处理后的结果和原来的类别全集是否一样长: ", len(TAGS_LIST))


if __name__ == '__main__':
    deal()

运行结果

一共有多少种分类:  37
手动处理为onehot的结果为: [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
判断处理后的结果和原来的类别全集是否一样长:  37
如果想保存结果到mysql,请查看另一篇博客python中list和str互转,方便数据库存取

猜你喜欢

转载自blog.csdn.net/liuzonghao88/article/details/86570536