在机器学习中,大多数算法只可处理数值型数据,fit的时候要求输入数组或矩阵,因此对于文字型数据要进行编码处理,即转化为数值型。在sklearn.preprocessing中有OrdinalEncoder /LabelEncoder/OneHotEncoder /get_dummies 可以将离散的类别转换为int。下面具体的操作方式说明。

OrdinalEncoder,LabelEncoder
OrdinalEncoder,与LabelEncoder用法 相似,效果是一样的。
OrdinalEncoder:特征专用,能够将分类特征转换为分类数值
LabelEncoder:标签专用,能够将分类转换为分类数值
二者都是将类别转换成新的数组,0到类别数n-1,注意并非0,1

import pandas as pd
from pandas import Series,DataFrame
import numpy as np
from sklearn.preprocessing import StandardScaler,OneHotEncoder,OrdinalEncoder,LabelEncoderdf=pd.read_table('salary.txt',sep=',')
df.head()
df.columns
df.drop(columns=['final_weight','education_num','capital_gain', 'capital_loss'],axis=1,inplace=True)


首先是ordinalencoder

ordinalencoder=OrdinalEncoder() #DataFrame
df_ordinal=ordinalencoder.fit_transform(df)
df_after_ordinal=DataFrame(df_ordinal,columns=df.columns)
df_after_ordinal.head()


接着是LabelEncoder

labelencoder=LabelEncoder()  #Series
labelencoder.fit_transform(df['salary'])
for col in df.columns:df[col]=labelencoder.fit_transform(df[col])
df.head()

可以看出OrdinalEncoder,与LabelEncoder将分类转化为1~n-1数值,它的缺点便是随机给特征进行排序,会给这个特征增加不存在的顺序关系。但是OneHot方法就避免了对特征排序的缺点。

OneHotEncoder
onehot独热编码将str转化为0,1,避免了特征排序,消除数值大小对代码的影响。

#onehot 独热编码,0,1,消除数值大小对代码的影响
onehot=OneHotEncoder()
edu=df[['education']]
edu_onehot=onehot.fit_transform(edu)
edu_onehotedu_onehot.toarray()[:5]


get_dummies 是pandas中提供的方法,原理与OneHotEncoder基本一致,不再赘述。

OrdinalEncoder、LabelEncoder与OneHotEncoder,get_dummies 区别

OrdinalEncoder、LabelEncoder OneHotEncoder,get_dummies
不会增加特征维度 增加特征维度
生成0,1,2…n-1 生成0,1
缺点:给特征增加不存在的顺序关系 优点:消除数值大小对代码的影响

str量化转化为int相关推荐

  1. Java 如何将String转化为Int

    在 Java 中要将 String 类型转化为 int 类型时,需要使用 Integer 类中的 parseInt() 方法或者 valueOf() 方法进行转换. 例1: 1 2 3 4 5 6 S ...

  2. 将String字符串转化为int

    将String字符串转化为int类型需要使用 Integer 类中的 parseInt() 方法或者 valueOf() 方法进行转换! 1. String str = "123456&qu ...

  3. java String类型转化为Int类型

    [将String 类型转化为int 类型] 一: public class IntegerDemo {public static void main(String[] args) {String st ...

  4. c语言pow函数精度差,pow()函数结果强制转化为int造成误差的分析

    开发环境:codeblocks,编译器gcc 在计算102时调用pow(10, 2),再强制类型转换为int类型后输出: printf("%d",(int)pow(,)); 得到的 ...

  5. pandas中的.astype()使用规范问题——以.astype(int)的一种str类型数据转int类型数据报错为例

    # 导入pandas,并使用"pd"作为该模块的简写 import pandas as pd# 使用read_csv()函数,获取文件"/Users/count/住户信息 ...

  6. java大string排序_java中字符串排序,String 转化为int比较大小

    引入题目 题目描述 设有nnn个正整数(n≤20)(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数. 例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213 ...

  7. 对将‘47 ’转化为int格式错误的问题解决

    发现遇到问题后将问题及解决办法记录下来真是个好习惯,以后遇到类似的问题就可以随时查询. 问题: 将 varchar 值 '20 ' 转换为数据类型为 int 的列时发生语法错误. 解决方法: 该问题主 ...

  8. 【Java习题程序】将int整数转化为int数组,不用转String。

    键盘输入整数,得到整形数组,正序,逆序 public class Main{public static void emm(){ Scanner sc = new Scanner(System.in); ...

  9. String字符串转化为int类型

    通常我们使用Integer的parseInt解析数字型字符串, 它的内部是怎么解析的呢? String num="-2147483645";int numInt=parseInt( ...

最新文章

  1. MySQL 的存储引擎
  2. 15. 二维数组中的查找【难度: 一般 / 知识点: 思维】
  3. I see IC的破冰之旅
  4. arduino loar_如何使用Arduino开发板制作函数生成器(波形发生器)
  5. 在WebForm戏说 js的注释
  6. 在Globalscape EFT FTP服务器上安装SSL证书的方法
  7. HMI设计RGB配色表
  8. 动词的过去式过去分词表
  9. 您的Android版本不兼容,android – “你的设备与此版本不兼容”
  10. vue weex 打电话
  11. 利用计算机网线传东西,如何把文件通过一个网线从一个电脑传到另一个电脑上...
  12. 运维体系建设(第二章)
  13. 腾讯第一批开发工程师徐钢武回忆道【曾几何时我真的认为代码是这样的】
  14. 360类redis存储服务Pika的安装和使用
  15. 算法:通过克鲁斯卡尔(Kruskal)算法,求出图的最小生成树
  16. win10+TPLINK,用PXE安装redhat系统
  17. 渗透测试入门10之痕迹清理
  18. 制造型企业该如何选择质量管理系统?
  19. php redis下单,redis 队列简单实现高并发抢购/秒杀
  20. lvds单8转双8芯片_液晶驱动板中的 LVDS 单6 单8 双6 双8 指的是什么

热门文章

  1. 港科大硕士ICCV 论文涉嫌抄袭,导师回应,二作已申请撤稿
  2. 计算机视觉方向简介 | 视觉惯性里程计(VIO)
  3. arXiv | 图表示方法驱动大分子计算研究
  4. DeepChem | 基于DeepChem的GCN预测化合物溶解度
  5. Log.v Log.d Log.i Log.w Log.e作用的总结
  6. 编译原理扫描程序,判断当前输入的程序中程序调用的函数是那个函数原型
  7. html5 上传超大文件,HTML5教程 如何拖拽上传大文件
  8. uiswitchbutton 点击不改变状态_Redux 包教包会(一):解救 React 状态危机
  9. SCL+Devtoolset 安装与使用笔记
  10. 如何在 5 分钟内建立一个数据驱动的新型冠状病毒肺炎应用程序