deep_learning_Function_One-host参数
在很多机器学习任务中,特征并不总是连续值,而有可能是分类值。比如星期类型,有星期一、星期二、……、星期日,比如浏览器类型有["uses Firefox", "uses Chrome", "uses Safari", "uses Internet Explorer"]。
对于这些离散型特征,可以用几个数字表示特征值,如用1表示星期一,2表示星期二;也可以用one-hot编码,如用[1,0,0,0,0,0,0]表示星期一,[0,1,0,0,0,0,0]表示星期二。
那什么情况用one-hot编码,什么情况可以不用呢?事实上,之所以用one-hot编码,是为了更合理地计算欧式距离。比如,有一个离散型特征,代表工作类型,该离散型特征,共有三个取值,不使用one-hot编码,其表示分别是x_1 = (1), x_2 = (2), x_3 = (3)。两个工作之间的距离是,(x_1, x_2) = 1, d(x_2, x_3) = 1, d(x_1, x_3) = 2。那么x_1和x_3工作之间就越不相似吗?显然这样的表示,计算出来的特征的距离是不合理。那如果使用one-hot编码,则得到x_1 = (1, 0, 0), x_2 = (0, 1, 0), x_3 = (0, 0, 1),那么两个工作之间的距离就都是sqrt(2).即每两个工作之间的距离是一样的,显得更合理。
对于离散型特征,基于树的方法是不需要使用one-hot编码的,例如随机森林等。基于距离的模型,都是要使用one-hot编码,例如神经网络等。
以下做个实验说明:
一个数据如下,这是对星期类型采用[1,2,3,4,5,6,7]进行编码的方式:
@relation 'day'
@attribute day numeric
@attribute class numeric
@data
1,1100
2,1200
3,1300
4,1400
5,1800
6,2000
7,1800
1,1100
2,1200
3,1300
4,1400
5,1800
6,2000
7,1800
……
在weka中用随机森林RandomForest算法建模,用默认的参数,并进行10折交叉验证的结果如下:
Correlation coefficient 1
Mean absolute error 0
Root mean squared error 0
Relative absolute error 0 %
Root relative squared error 0 %
Total Number of Instances 210
可以看出,误差为0。
在weka中用BP神经网络MultilayerPerceptron建模,用默认的参数,并进行10折交叉验证的结果如下:
Correlation coefficient 0.9645
Mean absolute error 71.9842
Root mean squared error 85.2536
Relative absolute error 23.7056 %
Root relative squared error 26.3015 %
Total Number of Instances 210
可以看出,误差比较高。
换one-hot编码的数据如下:
@relation 'day'
@attribute day1 numeric
@attribute day2 numeric
@attribute day3 numeric
@attribute day4 numeric
@attribute day5 numeric
@attribute day6 numeric
@attribute day7 numeric
@attribute class numeric
@data
1,0,0,0,0,0,0,1100
0,1,0,0,0,0,0,1200
0,0,1,0,0,0,0,1300
0,0,0,1,0,0,0,1400
0,0,0,0,1,0,0,1800
0,0,0,0,0,1,0,2000
0,0,0,0,0,0,1,1800
1,0,0,0,0,0,0,1100
0,1,0,0,0,0,0,1200
0,0,1,0,0,0,0,1300
0,0,0,1,0,0,0,1400
0,0,0,0,1,0,0,1800
0,0,0,0,0,1,0,2000
0,0,0,0,0,0,1,1800
……
在weka中用随机森林RandomForest算法建模,用默认的参数,并进行10折交叉验证的结果如下:
Correlation coefficient 1
Mean absolute error 0
Root mean squared error 0
Relative absolute error 0 %
Root relative squared error 0 %
Total Number of Instances 210
可以看出,误差为0。
在weka中用BP神经网络MultilayerPerceptron建模,用默认的参数,并进行10折交叉验证的结果如下:
Correlation coefficient 1
Mean absolute error 0
Root mean squared error 0
Relative absolute error 0 %
Root relative squared error 0 %
Total Number of Instances 210
可以看出,误差为0。
所以,在基于距离的模型中,对于离散型特征,应该采用one-hot编码方式,而且对于很多神经网络模型,能够很好地处理稀疏特征的情况。
————————————————
原文链接:https://blog.csdn.net/lanhaier0591/article/details/78702558
deep_learning_Function_One-host参数的更多相关文章
- 类似 go get –u 的命令行参数实现
我们可能需要类似 go get –u -. 这样的方式来实现我们的应用,这时候我们无法简单地使用 flag.Parse 了,而是要用 FlagSet 了, 使用例子如下: package main ...
- golang中设置Host Header的小Tips
前言 笔者最近时间一直在学习和写Ruby和Go,尤其是Go,作为云计算时代的标准语言,写起来还是相当有感觉的,难过其会越来越火. 不过写的过程中,也遇到了一些小问题,本文就是分享关于go语言设置 HT ...
- Docker网络——单host网络
前言 前面总结了Docker基础以及Docker存储相关知识,今天来总结一下Docker单主机网络的相关知识.毋庸置疑,网络绝对是任何系统的核心,他在Docker中也占有重要的作用.同样本文基于Clo ...
- Python命令行参数解析模块argparse
当写一个Python脚本时经常会遇到不同参数不同功能的情况,如何做一个更好看的命令帮助信息以及对命令参数解析呢? 这就需要使用argparse模块 #!/usr/bin/env python # -* ...
- Python基础:10函数参数
局部命名空间为各个参数值创建了一个名字,一旦函数开始执行,就能访问这个名字了. 在函数调用时,有非关键字参数和关键字参数之分,非关键字参数必须位于关键字参数之前. 在函数定义时,严格的顺序是:位置参数 ...
- cli框架 获取 命令行 参数
package main import ( "fmt" "log" "os" "github.com/urfave/cli&quo ...
- Infrastructure 知识: DNS 命令: dig, host
dig 基本用法: dig @server name type 或者用-t type来指定(更常见) dig @server -t type name 例子详解 # 最简单的使用 $ dig www. ...
- 【Golang】创建有配置参数的结构体时,可选参数应该怎么传?
写在前面的话 Golang中构建结构体的时候,需要通过可选参数方式创建,我们怎么样设计一个灵活的API来初始化结构体呢. 让我们通过如下的代码片段,一步一步说明基于可选参数模式的灵活 API 怎么设计 ...
- FREEBSD手工配置网络
在FreeBSD系统中,网络能力十分重要,对于一个标准的FreeBSD系统,至少要有一个网络界面以便与其他计算机通信.最常见的网络界面为以太网卡.此外FreeBSD也支持Token Ring和FDDI ...
- Android 中常见控件的介绍和使用
1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...
随机推荐
- Pytorch-属性统计
引言 本篇介绍Pytorch属性统计的几种方式. 统计属性 求值或位置 norm mean sum prod max, min, argmin, argmax kthvalue, topk norm ...
- Rowlock、UPDLOCK
ROWLOCK 使用行级锁,而不使用粒度更粗的页级锁和表级锁. UPDLOCK 读取表时使用更新锁,而不使用共享锁,并将锁一直保留到语句或事务的结束.UPDLOCK 的优点是允许您读取数据(不阻塞 ...
- HTML基础知识自学教程
HTML 是用来描述网页的一套标记标签,是我们在web前端开发中的基础.下面PHP程序员雷雪松主要结合自己的经验给大家分享下HTML的基础知识,以及在自学过程中一些比较常用的和重要的HTML知识点. ...
- STS中MyBatis的基本实现
本文采用的是<深浅spring boot 2.x>中第5章的例子,用一个接口实现对一个表项的读取. 数据库:mysql下建立user数据库,表名为t_usr 1. 数据源设置 在appli ...
- 【18.065】Lecture2
由于这一课的教材放出来了,所以直接将整个pdf放上来.   
- 爬取汽车之家新闻图片的python爬虫代码
import requestsfrom bs4 import BeautifulSouprespone=requests.get('https://www.autohome.com.cn/news/' ...
- HTTP 状态代码的完整列表
1xx(临时响应) 用于表示临时响应并需要请求者执行操作才能继续的状态代码. 代码 说明 100(继续) 请求者应当继续提出请求.服务器返回此代码则意味着,服务器已收到了请求的第一部分,现正在等待接收 ...
- 【VS开发】RIbbon编程
多彩界面,Ribbon编程 Ribbon是类似于office2007样式的界面,它替代了传统的MFC程序里的菜单和工具栏,MFC默认生成的Ribbon功能少,需要我们自己添加一些控件和图片等元素使界面 ...
- spring-boot 连接数据库(六)
环境 jdk 6 tomcat 6.0.53 sts 4.4.2 maven 3.2.5 mysql 5.7 准备 接下来的数据库操作基于 mysql,所以需要一套可用的 mysql 环境. 引入 j ...
- Spring的四种事务特性,五种隔离级别,七种传播行为
Spring事务: 什么是事务: 事务逻辑上的一组对数据对操作,组成这些操作的各个逻辑单元,要么一起成功,要么一起失败. 事务特性(4种): 原子性(atomicity):强调事务的不可分割:一致性( ...