机器学习数据预处理之范围缩放

5 篇文章 0 订阅
4 篇文章 0 订阅

1、什么是范围缩放

 统一样本矩阵中的不同特征的最大值和最小值的范围。(一般都是0-1) 
	 例如设样本集为X   [0, 1, 2, 3,4, 5 ]
	 范围缩放到【0-1】后  X1     [0, 0.2, 0.4, 0.6, 0.8, 1]

kmin+ b = min’ =0 原本特征中的最小值转换为0(每列特征的k.b都不一样)
kmax+b = max’=1 原本特征中的最大值转换为1
有关特征,样本 在上一章中有所介绍点击

2、作用

让数据更加规范化,使得特征的范围具有可比性,在某些分类器主要是计算两点之间的欧几里得距离(两点之间的真实距离),如果一个特征比其他的特征有更大的范围值,那么距离将会被这个特征值所主导,因此每个特征应该被范围缩放,比如将取值范围处理为0到1之间,还可以加快梯度收敛速度

3、原理示例代码

import numpy as np
samples = np.array([
    [25,175,79,0],
    [21,169,72,1],
    [25,155,79,0],
],dtype='float64')
mms_samples = samples.copy()
for col in mms_samples.T:
    col_min = col.min() #最小值
    col_max = col.max() #最大值
    a = np.array([
        [col_min,1],
        [col_max,1],
    ])
    min_max = np.array([0,1])
    kb= np.linalg.lstsq(a,min_max)[0] #返回斜率k和截距b
    col *= kb[0]  # 标量和矢量计算会进行广播
    col += kb[1]  # 标量和矢量计算会进行广播
print(mms_samples)

3、调用库包代码

import  numpy as np
import  sklearn.preprocessing as sp  #用来均值移除
sample = np.array([
    [2, 4, 5, -1],
    [3, 1, 7, -2],
    [6, -3, 2, -1],
], dtype="float")
mms = sp.MinMaxScaler(feature_range=(0,1)) #这是一个范围缩放器, 缩放范围为0-1
# fit_transform先对样本进行拟合求出斜率和截距(有点类似于模型训练) 然后再对样本进行转换由求得斜率与截距进行样本转换(类似于模型预测)
new_s = mms.fit_transform(sample)    #范围缩放后的样本矩阵
print(new_s)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值