独热编码OneHotEncoder简介
2024-10-18 10:21:40
在分类和聚类运算中我们经常计算两个个体之间的距离,对于连续的数字(Numric)这一点不成问题,但是对于名词性(Norminal)的类别,计算距离很难。即使将类别与数字对应,例如{‘A’,‘B’,‘C’}与[0,1,2]对应,我们也不能认为A与B,B与C距离为1,而A与C距离为2。独热编码正是为了处理这种距离的度量,该方法认为每个类别之间的距离是一样的。该方法将类别与向量对应,例如{‘A’,‘B’,‘C’}分别与[1,0,0],[0,1,0],[0,0,1]对应,注意现在各个类别之间的欧式距离是相同的。
现在我们说明OneHotEncoder函数的使用
data=np.array([[1,0,3.25],
[0,0,5.2],
[2,1,3.6]])
enc=OneHotEncoder(categorical_features=np.array([0,1]),n_values=[3,2])
enc.fit(data)
data=enc.transform(data).toarray()
print(data)
运行结果为
[[ 0. 1. 0. 1. 0. 3.25]
[ 1. 0. 0. 1. 0. 5.2 ]
[ 0. 0. 1. 0. 1. 3.6 ]]
categorical_features是需要独热编码的列索引,n_values是对应categorical_features中各列下类别的数目,也就是原来的列拓展出新的列数。注意这里两个值可以不指定,直接使用fit_transform函数也可以,程序将统计各列中类别的多少。但是只对整数有效,对浮点数会转换为整数之后再统计,也就是对于3.5和3.6默认都是3,也就是同一类。如果指定了这两个参数,就要对未转换的数据提出要求,各列必须是以{0,1,2,3,4......}来编码,而不能以{1,10,100,200.........}这种随意的方式来编码。否则会出现数组越界的错误
最新文章
- Matlab 之 数据元素访问
- 通过.net反射技术实现DataReader转换成Model实体类列表
- UIScrollView 原理详解
- CUBRID学习笔记 41 sql语法之select
- Asp.Net_Web身份验证
- PHP实现下载功能之流程分析
- Java克隆--深克隆与浅克隆的区别
- git新手碰到的各种奇葩问题之一
- HTML5 拼图游戏
- 《CLR via C#(第4版)》【PDF】下载
- UVALive 4850 Installations
- 数据排序--vue
- Git与Github的基本概念
- ArcGis安装失败提示“需要Microsoft .NET Framework 3.5 sp1或等效环境”的解决方法
- oss对象云存储
- 缓存:前端页面缓存、服务器缓存(依赖SQL)MVC3
- Diagnostic Trouble Code诊断故障码
- 推荐两款好用的反编译工具(Luyten,Jadx)
- Eclipse代码提示补全问题,自动选择第一个
- mysql 拼接字符