数据转图像、表征学习、均值编码、转换目标变量

原文:https://www.toutiao.com/i6597192035214557710/

几种新的特征转换思维:

1.数据转换成图像

  Kaggle上有一个微软恶意软件分类挑战,它的数据集包含一组已知的恶意软件文件,对于每个文件,原始数据包含文件二进制内容的十六进制表示。此前,参赛者在网上从没接触过类似的数据集,而他们的目标是开发最优分类算法,把测试集中的文件放到各自所属的类别中。比赛冠军的特征方法:

  将恶意文件的字节文档看成黑白图像,其中每个字节的像素强度在0-255之间。然而,标准图像处理技术与n-gram等其他特征不兼容。所以之后,我们从asm文件而不是字节文件中提取黑白图像。

  下图是同一恶意软件的字节图像、asm图像对比(左边是字节图像,右边是asm图像):

   

  asm文件是用汇编语言写成的源程序文件。这个团队发现把asm文件转成图像后,图像的前800-1000个像素的像素强度可以作为分类恶意软件的一个可靠特征。单独使用这个特征并不会给分类器性能带来明显变化,但当它和其他n-gram特征一起使用时,性能提升效果就很显著了。

2.表征学习特征

  自编码器能从数据样本中进行无监督学习,这意味着算法直接从训练数据中捕捉最显著的特征,无需其他特征工程。

3.均值编码

  用平均数这样的统计量度来对分类值进行编码,这就叫均值编码。

  

  feature_label是scikit-learn编码的标签,feature_mean就是莫斯科标签下的真实目标数量/莫斯科标签下的目标总数,也就是2/5=0.4;

  对于Tver标签—m=Tver标签下的真实目标数量=3,n=Tver标签下的目标总数=4,相应的,Tver编码就是m/n=3/4=0.75(约等于0.8);

  数据分析中经常会遇到类别属性,比如日期、性别、街区编号、IP地址等。绝大部分数据分析算法是无法直接处理这类变量的,需要先把它们先处理成数值型量。如果这些变量的可能值很多,也就是高基数,那么在这种情况下,使用label encoding会出现一系列连续数字,在特征中添加噪声标签和编码会导致精度不佳,使用one-hot编码,随着特征不断增加,数据集的维数也在不断增加,这会阻碍编码。因此,这时均值编码是最好的选择之一。但它也有缺点,就是容易过拟合,所以使用时要配合适当的正则化技术:CV 、Regularization Smoothing、Regularization Expanding mean。

4.转换目标变量

  当我们拿到一个高度偏斜的数据时,如果我们不做任何处理,最后模型的性能肯定会受影响。

  

  如上图所示,这里的数据高度偏斜,如果我们把目标变量转成log(1+目标)格式,那么它的分布就接近高斯分布了。

  

  需要注意的是,提交预测值时,我们需要进行转换回来。

原文地址:https://www.cnblogs.com/wzdLY/p/9591075.html

时间: 2024-11-29 06:00:12

数据转图像、表征学习、均值编码、转换目标变量的相关文章

python学习:编码转换

1 #!/usr/bin/env python 2 #coding:utf-8 3 4 msg="我爱北京天安门" 5 6 print(msg.encode('utf-8')) 7 8 print((msg.encode('utf-8')).decode('utf-8'))

opencv-从图像旋转学习Mat数据访问

先看一个简单的例子 代码: // ConsoleApplication3_6_23.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include<opencv2/opencv.hpp> #include<iostream> #include<vector> using namespace std; using namespace c

处理数据类型转换,数制转换、编码转换相关的类

MXS&Vincene  ─╄OvЁ  &0000014 ─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好,但是绝大部分人是死在明天晚上,只有那些真正的英雄才能见到后天的太阳. MXS&Vincene  ─╄OvЁ:We're here to put a dent in the universe. Otherwise why else even be here? 正文>>>>>

Python学习之路4 - 文件操作&amp;编码转换

文件操作 文件操作大概分三步: 把文件打开. 操作文件. 把文件关上. 打开文件 打开文件用open()函数,打开成功后返回一个资源,具体语法如下. open(要打开的文件,打开方式,打开文件的格式,默认为utf-8) #例如 f = open('passengers.txt','r',encoding='utf-8') 上例用open以只读的模式打开文件,因为该文本是utf-8编码的,所以第三个参数是utf-8 w 模式是写入,是创建一个新文件的写,所以如果已经有了该文件就会被覆盖掉,注意安全

最简单的基于FFMPEG的图像编码器(YUV编码为JPEG)

伴随着毕业论文的完毕,这两天最终腾出了空暇,又有时间搞搞FFMPEG的研究了.想着之前一直搞的都是FFMPEG解码方面的工作,非常少涉及到FFMPEG编码方面的东西,于是打算研究一下FFMPEG的编码.在网上看了一些样例,发现要不然是难度稍微有些大,要不然就是类库比較陈旧,于是就决定自己做一个编码方面的样例,方便以后学习. 本文的编码器实现了YUV420P的数据编码为JPEG图片.本着简单的原则,代码基本上精简到了极限.使用了2014年5月6号编译的最新的FFMPEG类库. 程序非常easy,打

图像编程学习笔记8——图像的平滑(去噪)

第一种方法:高斯模版 以下文字内容copy于<<数字图像处理编程入门>>,code为自己实现,是win32控制台程序. 先举个例子说明一下什么是平滑(smoothing),如下面两幅图所示:可以看到,图3.2比图3.1柔和一些(也模糊一些).是不是觉得很神奇?其实实现起来很简单.我们将原图中的每一点的灰度和它周围八个点的灰度相加,然后除以9,作为新图中对应点的灰度,就能实现上面的效果. 这么做并非瞎蒙,而是有其道理的.大概想一想,也很容易明白.举个例子,就象和面一样,先在中间加点水

系统出现乱码的原因和语系编码转换

出现乱码的原因: 可能是由于编码不同造成的 系统默认支持的语系数据    /etc/sysconfig/i18n 与终端接口语系有关(与 LANG 有关) 若文件是big5,而linux为utf8时,可以这样: #LANG=zh_cn.big5 然后在终端界面工具栏的“终端机--设置字符编码---中文(big5)”设置即可. 语系编码转换 #iconv --list                    列出conv支持的语系数据 #iconv -f  原本编码 -t 新编码 filename

我对大数据相关技术的学习心得及理解

本篇为这一段时间以来我对大数据相关技术的学习心得及理解,主要涉及以下几个方面: noSql, 集群, 数据挖掘, 机器学习,云计算,大数据,以及Hadoop和Spark.主要都是一些初级的概念澄清之类的东西,并且比较凌乱,慎入.* 1. NoSQL我的理解是,NoSQL主要用于存储一些非结构化数据, 是关系数据库与文件存储方式(比如视频文件就适合使用文件的方式存储)的过度. ** 1.1 NoSQL的分类: 列存储: Hbase(BigTable的开源实现),可存储结构化数据. Cassandr

OpenCV 基础知识------图像创建、访问、转换

cvCreateImage函数-- Cxcore数组操作 创建头并分配数据 IplImage* cvCreateImage( CvSize size, int depth, int channels ); size 图像宽.高. depth 图像元素的位深度,可以是下面的其中之一: IPL_DEPTH_8U - 无符号8位整型 IPL_DEPTH_8S - 有符号8位整型 IPL_DEPTH_16U - 无符号16位整型 IPL_DEPTH_16S - 有符号16位整型 IPL_DEPTH_32