机器学习中的特征处理--onehot编码

ML之DictVectorizer:利用DictVectorizer函数对dataframe格式所有类型特征实现数据向量化(数值化)同时处理【类别型】特征(本质是OneHot处理)和【数值型】特征(不 ​ ML之DictVectorizer:利用DictVectorizer函数对dataframe格式所有类型特征实现数据向量化(数值化)同时处理【类别型】特征(本质是OneHot处理)和【数值型】特征(不经过任何处理)代码实战 目录 利用DictVectorizer函数对dataframe格式所有类型特征实现数据向量化(数值化)同时处理【类别型】特征(本质是OneHot处理)和【数值型】特征(不经过任何处理)代码实战 利用DictVectorizer函数对dataframe格式所有类型特征实现数据 阅读详情

首先介绍数据标准化工具onehot[独热编码]:

One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。以手写数字识别为例,我们需要将0-9共十个数字标签转化成onehot标签。例如:数字标签“6”转化为onehot标签就是[0,0,0,0,0,0,1,0,0,0].
我第一次利用以下函数进行编码:

def convert2onehot(data):
    # covert data to onehot representation
    return pd.get_dummies(data, prefix=data.columns)

结果报错:
很明显职业一项我们一共有15个而该函数只能提供10个以下的编码,只能另觅他法喽,

ValueError: Length of 'prefix' (15) did not match the length of the columns being encoded (9).

虽然已经有很多人在 stackoverflow 和 sklearn 的 github issue 上讨论过这个问题,但目前为止的 sklearn 版本仍没有增加OneHotEncoder对字符串型类别变量的支持,所以一般都采用曲线救国的方式:

  • 方法一 :先用 LabelEncoder() 转换成连续的数值型变量,再用 OneHotEncoder() 二值化;
  • 方法二 :直接用 LabelBinarizer() 进行二值化;
import pandas as pd
#import Numpy as np
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import LabelBinarizer
from sklearn.preprocessing import MultiLabelBinarizer
col_names = ["age", "workclass", "fnlwgt", "education", "education-num", "marital-status", "occupation", 
             "relationship", "race", "sex", "capital-gain", "capital-loss", "hours-per-week", "native-country", "result"]
data = pd.read_csv("D://ML//Data//adult.csv", names=col_names)
#利用函数将文字标准化为tensorflow可以处理的数字
#OneHotEncoder(sparse = False).fit_transform( data[['age','education-num']] )
data['age']=LabelBinarizer().fit_transform(data['age'])
data['workclass']=LabelBinarizer().fit_transform(data['workclass'])
data['fnlwgt']=data['fnlwgt']/100
data['fnlwgt']=OneHotEncoder(sparse = False).fit_transform( data[['fnlwgt']] )
data['education']=LabelBinarizer().fit_transform(data['education'])
data['education-num']=LabelBinarizer().fit_transform(data['education-num'])
data['marital-status']=LabelBinarizer().fit_transform(data['marital-status'])
data['occupation']=LabelBinarizer().fit_transform(data['occupation'])
data['relationship']=LabelBinarizer().fit_transform(data['relationship'])
data['race']=LabelBinarizer().fit_transform(data['race'])
data['sex']=LabelBinarizer().fit_transform(data['sex'])
data['capital-gain']=LabelBinarizer().fit_transform(data['capital-gain'])
data['capital-loss']=LabelBinarizer().fit_transform(data['capital-loss'])
data['hours-per-week']=LabelBinarizer().fit_transform(data['hours-per-week'])
data['native-country']=LabelBinarizer().fit_transform(data['native-country'])
data['result']=LabelBinarizer().fit_transform(data['result'])

print(data[:10])

打印结果如下所示:

 age  workclass  fnlwgt  education  education-num  marital-status  \
0    0          0     0.0          0              0               0   
1    0          0     0.0          0              0               0   
2    0          0     0.0          0              0               1   
3    0          0     0.0          0              0               0   
4    0          0     0.0          0              0               0   
5    0          0     0.0          0              0               0   
6    0          0     0.0          0              0               0   
7    0          0     0.0          0              0               0   
8    0          0     0.0          0              0               0   
9    0          0     0.0          0              0               0   

   occupation  relationship  race  sex  capital-gain  capital-loss  \
0           0             0     0    1             0             1   
1           0             1     0    1             1             1   
2           0             0     0    1             1             1   
3           0             1     0    1             1             1   
4           0             0     0    0             1             1   
5           0             0     0    0             1             1   
6           0             0     0    0             1             1   
7           0             1     0    1             1             1   
8           0             0     0    0             0             1   
9           0             1     0    1             0             1   

   hours-per-week  native-country  result  
0               0               0       0  
1               0               0       0  
2               0               0       0  
3               0               0       0  
4               0               0       0  
5               0               0       0  
6               0               0       0  
7               0               0       1  
8               0               0       1  
9               0               0       1  

如果觉得本文写的还不错的伙伴,可以给个关注一起交流进步,如果有在找工作且对阿里感兴趣的伙伴,也可以发简历给我进行内推:
在这里插入图片描述

使用onehot 编码搞nlp 【代码】使用onehot 编码搞nlp。 阅读详情

相关推荐

攻防世界-Reverse-Game

攻防世界,game,逆向

wuh2333的博客 775

Length of values (1) does not match length of index (5)

这个错误的意思是,你所提供的数据长度不匹配。在这种情况下,值的长度为1,而索引的长度为5。这通常发生在您尝试将数据插入pandas DataFrame或Series时。您需要确保所有数据的长度相同,才能正确地将其插入数据结构中。 ...

weixin_42613360的博客 1863

【原创】SAP/Oracle 集团企业海外全球化实施注意事项: 一带一路本地化 (持续更新)...

ABC集团SAP的系统平台已经扩展到全球一百来个国家和地区,SAP系统平台的全球实施项目中, 当时是需要支持当地的业务和法律法规的合规要求。   当时客户也是缺乏当地的资源以及对当地法律法规和业务实践的了解,需要团队提供了全球化的支持,通过我们全球产品技术专家充分传递了各区域的本地化支持和实践 而且近年来我们发现一些国家和政府,陆续都在推出一些新的税改和合规的要求,接下来基于这些要求,我们全球...

weixin_34024034的博客 1143

Length of values (1) does not match length of index (366)

这个错误消息的意思是:值的长度(1)与索引长度(366)不匹配。 这通常是由于在您的代码中尝试将一个长度为1的值分配给长度为366的索引导致的。为了解决这个问题,您需要确保值的长度与索引的长度匹配,并重新检查您的代码。 ...

weixin_35752645的博客 1357

OpenCV卡尺工具实战:5步搞定工业级圆与直线拟合(附完整C++源码)

本文详细介绍了使用OpenCV卡尺测量工具实现工业级圆与直线拟合的5个关键步骤,包括核心原理、环境配置、边缘点提取优化、鲁棒性几何拟合实现及QT集成技巧。通过模块化C++源码和实战案例,帮助开发者快速掌握高精度尺寸测量技术,适用于机械零件、PCB板等工业检测场景。

uran的专栏 843

app逆向分析案例-95分

先把justtrusmeplus打开设置好95分,开始抓包,得到结果为: https://www.95fenapp.com/api_goods/list/v3.0?is_all=1&keywords=%E7%A7%91%E6%AF%94& page=1&page_size=20 &publish_timestamp=0 &scene=2&scene_type=95fen_android_search_personal&sn=SearchList

weixin_41763171的博客 2742

ValueError: Length of feature_names, 4 does not match number of features, 2 的解决方法

决策树

zy的博客 3340

【漏洞复现】WordPress Plugin NotificationX 存在sql注入CVE-2024-1698

技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。WordPress和WordPress plugin都是WordPress基金会的产品。WordPress Plugin NotificationX 存在安全漏洞,该漏洞源于对用户提供的参数转义不充分以及对现有 SQL 查询缺乏充分的准备,很容易通过“type”参数受到 SQL 注入攻击。

失心少年 1382

ValueError: Length of values does not match length of index

今日有个学生截图问了我一个问题,我擦扎心啊。扎心的不是这个问题有多低级,而是他没有解决问题的能力。虽然是个别问题,但依然是我的错。 ValueError: Length of values does not match length of index 翻译一下: ValueError: value的长度不匹配index的长度 很明显的错误: 学生源代码是: data["评价编号"] = np.where(data[data["评价"] == "好评"], 1, 0) 我让他输出了一下data[d.

吉米_王 5万+

【OpenFOAM】-olaFlow-算例6- waveFloatingObject

波浪作用下的浮体的刚体运动,属于流固耦合(FSI)问题

ou_no的博客 3538

Unreal5从入门到精通之一文搞懂Unreal的C++代码编译之谜

我们在开发Unreal项目时,如果时蓝图模板的项目,一般问题不大,因为当你修改完蓝图,点击编译Compile+保存Save,就可以继续开发了。这对于开发者来说也非常友好。但是,如果你使用的C++模板开发项目,代码编译一切都变得魔幻起来,IDE(VS/Rider)里面有编译,编辑器里面也有编译,有什么区别呢?我们来列举几个新手常碰到的问题。1.代码我明明新建了,编辑器里怎么看不到?2.昨天我新家的功能运行的好好的,今天怎么感觉还是老逻辑。或者昨天加的新代码,新蓝图不见了。

TxNet 1604

pandas字段分列遇到ValueError: Length of values does not match length of index

在使用pandas针对字段进行分列时遇到这个问题,问题描述例如:针对字段进行分列。

qq_41693052的博客 1万+

WPS Office JS宏实现文件和数据的上传及下载

WPS Office JS宏下载、上传文件;通过加载项实现数据的获取和上传。

学点笔记 4300

机器学习特征预处理之Onehot 编码

稀疏矩阵是指矩阵中大部分元素为0的矩阵。在OneHot编码中,每个样本只有一个类别值为1,其余都是0,天然适合用稀疏格式存储。python# 假设有100个城市,100万条数据# 密集矩阵:100万 × 100 = 1亿个元素# 稀疏矩阵:只存储非零元素的位置和值。

larance的挨踢生活 86

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

python机器学习前戏 ——特征工程应用

python 机器学习前戏——特征工程

weixin_54603520的博客 2378

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数据处理--One Hot Encoding

忘记从哪几位大神哪搜罗来的了 One Hot Encoding 又称为一位 有效编码, 主要采用N位状态寄存器来对N个状态进行编码, 每个状态都有独立的寄存位, 并且在任意时候都只有一位有效。 例如: 自然状态码为: 000, 001, 010, 100, 101 One-Hot...

chengyuhuo3319的博客 249

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

数据分箱 bagging&boosting onehot独热编码 woe编码 sklearn的ensemble(集成学习)

ensemble(集成学习)在scikit-learn(通常简称为sklearn)库中,ensemble模块是一个提供集成学习方法的模块。集成学习方法通过结合多个基学习器(通常是决策树)来构建更加强大和鲁棒的模型。Bagging方法: 用于分类的Bagging集成。: 用于回归的Bagging集成。随机森林: 用于分类的随机森林算法。: 用于回归的随机森林算法。: 用于分类的Extra-Trees(极度随机树)算法。: 用于回归的Extra-Trees算法。AdaBoost。

m0_68339197的博客 1303

机器学习-数据处理、特征工程、特征选择 实操

数据处理、特征工程、特征选择不太会粘代码和排版 so 以截图方式  不懂的地方欢迎留言/私聊载入了解一下数据head()info()describe()注:std 标准差基本数据处理0.缺失值处理(两种方式)pandas fillnasklearn Imputer可以用pandas的fillna函数借助sklearn中的Imputerfrom sklearn.preprocessing impor...

朱小丰的丰的博客 2350

One-hot encoding 数据处理

import csv import os import shutil import codecs import pandas as pd import numpy as npfrom sklearn.preprocessing import OneHotEncoder from sklearn.preprocessing import LabelEncoder from sklearn

thuang_10的专栏 527

推荐问题中ID类特征的处理办法

ID类特征处理办法什么是id类特征onehottfidfID类特征embeddingembedding直接嵌入到模型中ids通过上下文关系转化为embedding 什么是id类特征 举腾讯2020年的广告大赛为例子 如上图所示:原始数据经过脱敏之后是一些id数字类的特征,这些每一个creative_id代表一种广告,若将id类特征onehot之后将会得到很大的类矩阵,接近300万维,这是不可能做后续工作的。因此需要通过id2embedding方法将id类特征变成低维稠密的embedding向量。 oneh

weixin_42720875的博客 4090

Python 数据分析第三版(五)

在本章中,我们重点讲解了如何在基础数据科学 Python 库(如 pandas、Numpy 和 scikit-learn)上执行并行计算。Dask 为 DataFrame 和数组提供了完整的抽象,可以在单核/多核机器或集群中的多个节点上处理中等规模的数据集。我们从本章开始时,先了解了 Dask 的数据类型,如 DataFrame、数组和 Bag。接着,我们重点介绍了 Dask Delayed、预处理以及在并行环境下的机器学习算法。这是本书的最后一章,意味着我们的学习旅程到此为止。

龙哥盟 730

python学习之机器学习第一课

人工智能、机器学习、神经网络以及深度学习之前的关系人工智能是一种抽象的概念。

qq_38404903的博客 231

python数据预处理的方法_数据清洗&预处理入门完整指南

数据预处理是建立机器学习模型的第一步(也很可能是最重要的一步),对最终结果有决定性的作用:如果你的数据集没有完成数据清洗和预处理,那么你的模型很可能也不会有效——就是这么简单。人们通常认为,数据预处理是一个非常枯燥的部分。但它就是「做好准备」和「完全没有准备」之间的差别,也是表现专业和业余之间的差别。就像为度假做好事先准备一样,如果你提前将行程细节确定好,就能够预防旅途变成一场噩梦。那么,应该怎么...

weixin_39605326的博客 260

机器学习-机器学习之特征工程

​在机器学习中有一个不成文的说法(数据不给力,再厉害的算法也白搭)首先说明这句话是我编的。但是我主要是想表达一下数据在算法中的重要性,所以我们在拿到数据时,我们首先应该观察数据,对数据进行一系列的数据预处理。我们在演示的时候,很多时候用的是sklearn包中的数据(那些是很完美的数据)但是我们在实际生产中不可能拿到这么完美的数据(算了,不这么说)但是我们的实际生产中很大可能不会拿到这么完美的数据,经常拿到的数据是有缺失,有异常,有噪音,或者需要处理的数据。如果我们把数据处理的很好也能提高算法的能力。 接下里

qq_39185267的博客 532

特征工程面试题

进行特征工程的第一步是对数值类型进行理解 类别字段的特征工程 缺失值填充 使用出现次数最多的字段值进行填充 #独热编码 pd.get_dummier(数据的dataframe,columns=['列名']) #自然数编码 label encoder sklearn版 from sklearn.preprocessing import LabelEncoder le = LabelEncoder() df['新列名'] =le.fit_transform(df['用来labelenco

weixin_45955767的博客 449

鲍鱼数据集案例分析-预测鲍鱼年龄(线性回归/梯度下降法实操)

鲍鱼数据集案例分析-预测鲍鱼年龄(线性回归/梯度下降法实操)

WSY_nian的博客 1万+
上一篇: 高速视觉伺服系统(二)
下一篇: Matlab2016做曲线拟合(Curve Fitting)(1)
powerlwj
博客等级 码龄12年 116粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值