在分类和聚类运算中我们经常计算两个个体之间的距离,对于连续的数字(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.........}这种随意的方式来编码。否则会出现数组越界的错误

  

最新文章

  1. Matlab 之 数据元素访问
  2. 通过.net反射技术实现DataReader转换成Model实体类列表
  3. UIScrollView 原理详解
  4. CUBRID学习笔记 41 sql语法之select
  5. Asp.Net_Web身份验证
  6. PHP实现下载功能之流程分析
  7. Java克隆--深克隆与浅克隆的区别
  8. git新手碰到的各种奇葩问题之一
  9. HTML5 拼图游戏
  10. 《CLR via C#(第4版)》【PDF】下载
  11. UVALive 4850 Installations
  12. 数据排序--vue
  13. Git与Github的基本概念
  14. ArcGis安装失败提示“需要Microsoft .NET Framework 3.5 sp1或等效环境”的解决方法
  15. oss对象云存储
  16. 缓存:前端页面缓存、服务器缓存(依赖SQL)MVC3
  17. Diagnostic Trouble Code诊断故障码
  18. 推荐两款好用的反编译工具(Luyten,Jadx)
  19. Eclipse代码提示补全问题,自动选择第一个
  20. mysql 拼接字符

热门文章

  1. 与 Hadoop 对比,如何看待 Spark 技术?
  2. 深入理解计算机系统chapter1
  3. Quartz学习——Spring和Quartz集成详解(三)
  4. 第4章 同步控制 Synchronization ----同步机制的摘要
  5. Jest 单元测试入门
  6. 接口测试——HttpClient工具的https请求、代理设置、请求头设置、获取状态码和响应头
  7. 小米2017秋招真题——电话号码分身问题(Java版)
  8. TCO之旅
  9. ZOJ3508 The War 贪心,最大流
  10. win7下安装Ubuntu后进不去win7的解决方法