机器学习 常见数据预处理操作之均值移除

1、什么是均值移除

在介绍均值移除之前 先介绍一下数据在做处理时一般都是认为
一行一样本,一列一特征 而我们的均值移除操作也基本是对列(特征)进行操作
均值移除:平均值调整为0 标准差调整为1
设数据集为X 【7,8,9,10,11】
数据集的平均值为M = 9
数据集的标准差S = 2
以下是标准差公式
在这里插入图片描述
求出上述所需条件以后
数据集为X 每个数减去平均值以后在除以标准差即可把平均值调整为0 标准差调整为1
[(7-M)/s , (8-M)/S, … (11-M)/S]
均值移除以后X=>[-1, -0.5, 0, 0.5, 1]

2、为什么要均值移除

上面说到均值移除基本上是对列操作
如果特征基准值和分散度不同在某些算法(例如回归算法,KNN等)上可能会大大影响了模型的预测能力,所以我们会确保每一个特征列的数值都在类似的数据范围之间,防止某一个特征列数据天然的数值太大而一家独大影响结果

3、原理示例代码

# -*- coding:utf-8 -*-
import numpy as np
#创建数据集
sample = np.array([
    [2, 4, 5, -1],
    [3, 1, 7, -2],
    [6, -3, 2, -1],
], dtype="float")
print(sample.mean(axis=0))  #列的平均值 axis=0取列
print(sample.std(axis=0))   #列的标准差
s = sample.copy()
# 因为一行一样本,一列一特征,要对特征进行处理均值移除所以先转置 (因为遍历只会对水平方向进行遍历)
for col in s.T:
    col_mean = col.mean()  #取每一列的平均值
    col_std = col.std()  #取每一列的标准差
    col -= col_mean     #让平均值为0 每个数减去此列的平均值
    col /= col_std       #让标准差为1 每个数减去此列的平均值以后再除以此列标准差
print(s)

print(s.mean(axis=0))   #修改以后列的平均值
print(s.std(axis=0))   #修改以后列的标准差

4、调用库包代码

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")
new_sample = sp.scale(sample)   #做均值移除操作
print(new_sample)
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值