str量化转化为int
在机器学习中,大多数算法只可处理数值型数据,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相关推荐
- Java 如何将String转化为Int
在 Java 中要将 String 类型转化为 int 类型时,需要使用 Integer 类中的 parseInt() 方法或者 valueOf() 方法进行转换. 例1: 1 2 3 4 5 6 S ...
- 将String字符串转化为int
将String字符串转化为int类型需要使用 Integer 类中的 parseInt() 方法或者 valueOf() 方法进行转换! 1. String str = "123456&qu ...
- java String类型转化为Int类型
[将String 类型转化为int 类型] 一: public class IntegerDemo {public static void main(String[] args) {String st ...
- c语言pow函数精度差,pow()函数结果强制转化为int造成误差的分析
开发环境:codeblocks,编译器gcc 在计算102时调用pow(10, 2),再强制类型转换为int类型后输出: printf("%d",(int)pow(,)); 得到的 ...
- pandas中的.astype()使用规范问题——以.astype(int)的一种str类型数据转int类型数据报错为例
# 导入pandas,并使用"pd"作为该模块的简写 import pandas as pd# 使用read_csv()函数,获取文件"/Users/count/住户信息 ...
- java大string排序_java中字符串排序,String 转化为int比较大小
引入题目 题目描述 设有nnn个正整数(n≤20)(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数. 例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213 ...
- 对将‘47 ’转化为int格式错误的问题解决
发现遇到问题后将问题及解决办法记录下来真是个好习惯,以后遇到类似的问题就可以随时查询. 问题: 将 varchar 值 '20 ' 转换为数据类型为 int 的列时发生语法错误. 解决方法: 该问题主 ...
- 【Java习题程序】将int整数转化为int数组,不用转String。
键盘输入整数,得到整形数组,正序,逆序 public class Main{public static void emm(){ Scanner sc = new Scanner(System.in); ...
- String字符串转化为int类型
通常我们使用Integer的parseInt解析数字型字符串, 它的内部是怎么解析的呢? String num="-2147483645";int numInt=parseInt( ...
最新文章
- MySQL 的存储引擎
- 15. 二维数组中的查找【难度: 一般 / 知识点: 思维】
- I see IC的破冰之旅
- arduino loar_如何使用Arduino开发板制作函数生成器(波形发生器)
- 在WebForm戏说 js的注释
- 在Globalscape EFT FTP服务器上安装SSL证书的方法
- HMI设计RGB配色表
- 动词的过去式过去分词表
- 您的Android版本不兼容,android – “你的设备与此版本不兼容”
- vue weex 打电话
- 利用计算机网线传东西,如何把文件通过一个网线从一个电脑传到另一个电脑上...
- 运维体系建设(第二章)
- 腾讯第一批开发工程师徐钢武回忆道【曾几何时我真的认为代码是这样的】
- 360类redis存储服务Pika的安装和使用
- 算法:通过克鲁斯卡尔(Kruskal)算法,求出图的最小生成树
- win10+TPLINK,用PXE安装redhat系统
- 渗透测试入门10之痕迹清理
- 制造型企业该如何选择质量管理系统?
- php redis下单,redis 队列简单实现高并发抢购/秒杀
- lvds单8转双8芯片_液晶驱动板中的 LVDS 单6 单8 双6 双8 指的是什么
热门文章
- 港科大硕士ICCV 论文涉嫌抄袭,导师回应,二作已申请撤稿
- 计算机视觉方向简介 | 视觉惯性里程计(VIO)
- arXiv | 图表示方法驱动大分子计算研究
- DeepChem | 基于DeepChem的GCN预测化合物溶解度
- Log.v Log.d Log.i Log.w Log.e作用的总结
- 编译原理扫描程序,判断当前输入的程序中程序调用的函数是那个函数原型
- html5 上传超大文件,HTML5教程 如何拖拽上传大文件
- uiswitchbutton 点击不改变状态_Redux 包教包会(一):解救 React 状态危机
- SCL+Devtoolset 安装与使用笔记
- 如何在 5 分钟内建立一个数据驱动的新型冠状病毒肺炎应用程序