数据预处理
1、数据特征
一列一特征
|
v
一行一样本 -> x x x x x \ y y y
x x x x x | 样本矩阵 y y y
x x x x x / y y y
姓名 年龄 身高 体重 ...
张飞 22 1.75 60
赵云 20 1.80 70
...
2、均值移除
目的:为了统一样本矩阵中不同特征的基准值和分散度,可以将各个特征的平均值调整为0,标准差调整为1,这个过程称为均值移除。
(1)均值移除原理操作示例:
a, b, c # 三个数据源
m=(a+b+c)/3 # 原始均值
a`=a-m, b`=b-m, c`=c-m # (均值移除)操作
m'=(a`+b`+c`)/3=(a+b+c)/3-3m/3=0 # 处理后均值为0
A, B, C # 三个数据源
s=sqrt((A^2+B^2+C^2)/3) # 原始标准差
A/s B/s C/s # (均值移除)操作
s'=sqrt((A^2/s^2+B^2/s^2+C^2/s^2)/3) # 处理后标准差为1
=sqrt((A^2+B^2+C^2)/s^2/3)
=sqrt(s^2/s^2)
=1
import numpy as np
raw_samples = np.array([ # 原始数据
[3, -1.5, 2, -5.4],
[0, 4, -0.3, 2.1],
[1, 3.3, -1.9, -4.3]])
std_samples = raw_samples.copy() # copy一份
for col in std_samples.T: # 拿出每一列
col_mean = col.mean() # 均值
col_std = col.std() # 标准差
col -= col_mean # 均值移除
col /= col_std # 均值移除
print(std_samples)
print(std_samples.mean(axis=0))
print(std_samples.std(axis=0))
(2)使用 sklearn 库实现均值移除:
sklearn.preprocessing.scale(原始样本矩阵)
->均值移除后的样本矩阵
# -*- coding: utf-8 -*-
import numpy as np
import sklear