注:本文是人工智能研究网的学习笔记

规范化(Normalization)

Normalization: scaling individual to have unit norm

规范化是指,将单个的样本特征向量变换成具有单位长度(unit norm)的特征向量的过程。当你要使用二次形式(quadratic from)如点积或核变换运算来度量任意一堆样本的相似性的时候,数据的规范化会非常的有用

假定是基于向量空间模型,经常被用于文本分类和内容的聚类。

函数normalize提供了快速简单的方法使用L1或L2范数(距离)执行规范化操作:

X = [[1., -1., 2.],
[2., 0., 0.],
[0., 1., -1.]]
X_normalized = preprocessing.normalize(X, norm='l2')
X_normalized

注意:该函数按行操作,把每一行变成单位长度。使用每一个元素去除以欧式距离。

preprocessing模块也提供了一个类Normalizer实现了规范化操作,该类是一个变换器Transformer,具有Transformer API(尽管fit方法在这种时候是没有用的: 该类是一个静态类因为归一化操作是将每一个样本单独进行变换,不存在在所有样本上的统计学习过程。)

规范化操作类Normalizer作为数据预处理步骤,应该用在Pineline管道流的早期阶段。

以上的transform过程不依赖于上面的X,也就是说fit是多余的,只是为了整个sklearn的统一。

Sparse input

normalize函数和Normalizer类都接受dense array-like and sparse matrics from scipy.sparse作为输入。

对于稀疏输入,在进入高效的Cython routines处理之前,都会将其转化成CSR(Compressed Sparse Rows)格式(scipy.sparse.csr_matrix),为了避免不必要的数据拷贝,推荐使用CSR格式的稀疏矩阵。

二值化(Binarize)

Binarization: thresholding numerical features to get boolean values

Feature binarization: 将数值型特征取值阈值化转换为布尔型特征取值,这一过程主要是为概率型的学习器(probabilistic estimators)提供数据预处理机制。

概率型学习器(probabilistic estimators)假定输入数据是服从于多变量伯努利分布(multi-variate Bernoulli distribution)的, 概率性学习器的典型的例子是sklearn.neural_network.BrenoulliRBM

在文本处理中,也普遍使用二值特征简化概率推断过程,即使归一化的词频特征或TF-IDF特征的表现比而二值特征稍微好一点。

就像Normalizer,Binarizer也应该用在sklearn.pipeline.Pipeline的早期阶段。fit方法也是什么也不干,有或者没有是一样的。

X = [[1., -1., 2.],
[2., 0., 0.],
[0., 1., -1.]]
binarizer = preprocessing.Binarizer().fit(X)
print(binarizer)
print('-----')
print(binarizer.transform(X))

binarizer = preprocessing.Binarizer(threshold=1.1)
binarizer.transform(X)

就像StandardScaler和Normalizer类一样,preprocessing模块也为我们提供了一个方便的额binarize进行数值特征的二值化。

Sparse input

normalize函数和Normalizer类都接受dense array-like and sparse matrics from scipy.sparse作为输入。

对于稀疏输入,在进入高效的Cython routines处理之前,都会将其转化成CSR(Compressed Sparse Rows)格式(scipy.sparse.csr_matrix),为了避免不必要的数据拷贝,推荐使用CSR格式的稀疏矩阵。

数据预处理:规范化(Normalize)和二值化(Binarize)的更多相关文章

  1. [转载+原创]Emgu CV on C# (四) —— Emgu CV on 全局固定阈值二值化

    重点介绍了全局二值化原理及数学实现,并利用emgucv方法编程实现. 一.理论概述(转载,如果懂图像处理,可以略过,仅用作科普,或者写文章凑字数)  1.概述 图像二值化是图像处理中的一项基本技术,也 ...

  2. 机器学习实战基础(十二):sklearn中的数据预处理和特征工程(五) 数据预处理 Preprocessing & Impute 之 处理分类特征:处理连续性特征 二值化与分段

    处理连续性特征 二值化与分段 sklearn.preprocessing.Binarizer根据阈值将数据二值化(将特征值设置为0或1),用于处理连续型变量.大于阈值的值映射为1,而小于或等于阈值的值 ...

  3. 数据预处理 | 使用 Pandas 进行数值型数据的 标准化 归一化 离散化 二值化

    1 标准化 & 归一化 导包和数据 import numpy as np from sklearn import preprocessing data = np.loadtxt('data.t ...

  4. 机器学习入门-数值特征-进行二值化变化 1.Binarizer(进行数据的二值化操作)

    函数说明: 1. Binarizer(threshold=0.9) 将数据进行二值化,threshold表示大于0.9的数据为1,小于0.9的数据为0 对于一些数值型的特征:存在0还有其他的一些数 二 ...

  5. python的N个小功能(图片预处理:打开图片,滤波器,增强,灰度图转换,去噪,二值化,切割,保存)

    ############################################################################################# ###### ...

  6. OpenCV图像的二值化

    图像的二值化: 与边缘检测相比,轮廓检测有时能更好的反映图像的内容.而要对图像进行轮廓检测,则必须要先对图像进行二值化,图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出 ...

  7. [置顶] c#验证码识别、图片二值化、分割、分类、识别

    c# 验证码的识别主要分为预处理.分割.识别三个步骤 首先我从网站上下载验证码 处理结果如下: 1.图片预处理,即二值化图片 *就是将图像上的像素点的灰度值设置为0或255. 原理如下: 代码如下: ...

  8. 图像处理------基于Otsu阈值二值化

    一:基本原理 该方法是图像二值化处理常见方法之一,在Matlab与OpenCV中均有实现. Otsu Threshing方法是一种基于寻找合适阈值实现二值化的方法,其最重 要的部分是寻找图像二值化阈值 ...

  9. 深度学习实践-强化学习-bird游戏 1.np.stack(表示进行拼接操作) 2.cv2.resize(进行图像的压缩操作) 3.cv2.cvtColor(进行图片颜色的转换) 4.cv2.threshold(进行图片的二值化操作) 5.random.sample(样本的随机抽取)

    1. np.stack((x_t, x_t, x_t, x_t), axis=2)  将图片进行串接的操作,使得图片的维度为[80, 80, 4] 参数说明: (x_t, x_t, x_t, x_t) ...

随机推荐

  1. PyTorch快速入门教程七(RNN做自然语言处理)

    以下内容均来自: https://ptorch.com/news/11.html word embedding也叫做word2vec简单来说就是语料中每一个单词对应的其相应的词向量,目前训练词向量的方 ...

  2. listen系统调用

    /* * Perform a listen. Basically, we allow the protocol to do anything * necessary for a listen, and ...

  3. Javascript中的Callback方法浅析

    什么是callback?  回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数 ...

  4. 002_curl及postman专题

    一. 步骤 1: 下载cURL工具 使用您的Windows机器从cURL web站点下载最新版本的cURL: (1) 通常情况下,多数的Windows用户可以从官网下载页面http://curl.ha ...

  5. iframe内部刷新后跳转锚点

    开发过程中需要在iframe内容页中点击刷新按钮刷新页面并跳转至页面底部,编写js函数在url后面加上锚点名称#mao,但发现并未达到预期效果,通过测试发现锚点只有在第一次访问页面的时候才会生效,所有 ...

  6. MySQL 导入CSV数据

    第一步 创建表结构 create table t1( key1 ), v1 ) ); 第二步 导入数据 load data local infile 'D:/t1.csv' into table t1 ...

  7. 七、springcloud之配置中心Config(二)之高可用集群

    方案一:传统作法(不推荐) 服务端负载均衡 将所有的Config Server都指向同一个Git仓库,这样所有的配置内容就通过统一的共享文件系统来维护,而客户端在指定Config Server位置时, ...

  8. 追MM与设计模式

    1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了.麦当劳和肯德基就是生产鸡翅 ...

  9. java 添加一组元素

    在java包中的Arrays和Collection类中都有很多实用方法,可以在一个Collection中添加一组元素,Array.asList()方法接受一个数组或是一个用逗号分隔的元素列表(使用可变 ...

  10. 如何修改SQL Server 2000的数据库逻辑与物理名称

    在项目中使用SQL Server 2000创建了一个数据库,发现名称与另一个数据库太相似,于是决定更改名称,包括: 在企业管理器中看到的数据库名,也是实际应用程序中连接用的数据库名称: 在磁盘上看的物 ...