特征标准化

特征标准化


特征标准化:feature normalization

又叫数据标准化、正规化、正常化、归一化,normalization(或scale)

数据的偏差和跨度过大(特征量级相差过大,或明显不遵从高斯分布)会影响机器学习的效果,把数据正规化(标准化)后可以提升机器学习准确率


现实中的数据,特征之间的数据范围往往差距悬殊,

如果用线性回归方程预测房屋价格,a、b/c就是机器学习需要优化的参数

房屋预测价格 = a*离市中心距离 + b*楼层 + c*面积 + d

误差 = 预测价格 - 实际价格
  • 机器学习计算预测值和实际值的差异,然后对误差做数学处理
  • 上面公式里,面积很大,50-300,距离很小0.5-10(km),如果都参与运算,则距离对结果的贡献比面积大的多,
    • (距离变化一点,价格变化不大,面积变化一点,价格变化很大
    • 为了均衡各特征的跨度,使各特征数据跨度统一,需要正规化特征
import numpy as np
import matplotlib.pyplot as plt
np.set_printoptions(suppress=True) # 不用科学计数法输出数据(方便直观比较数据)

# 三个特征
X = np.array([[10, 2.7, 3.6],[-100, 5, -2],[120, 20, 40]])
X
array([[  10. ,    2.7,    3.6],
       [-100. ,    5. ,   -2. ],
       [ 120. ,   20. ,   40. ]])
plt.figure(figsize=(11, 3))

plt.subplot(1,3,1)
plt.scatter(X[:, 0], X[:, 1])
plt.subplot(1,3,2)
plt.scatter(X[:, 0], X[:, 2])
plt.subplot(1,3,3)
plt.scatter(X[:, 1], X[:, 2])
<matplotlib.collections.PathCollection at 0x903b160>
output_3_1.png

方法1:

standard deviation normalization:

  • 适合没有明显边界、可能有极端值的数据,如人群收入,大部分人很少,个别人很大
  • 有明显边界的数据,如考试成绩,也适用于这种方法

将特征数据缩放成 平均值为0,方差为1
公式为:(x - x_mean) / x_std
忽略特征数据的原分布形状,移除每个特征的均值,划分离散特征的方差,实现数据中心化
# 手动正规化
X2 = (X - X.mean(axis=0)) / X.std(axis=0)
X2
array([[ 0.        , -0.85170713, -0.55138018],
       [-1.22474487, -0.55187146, -0.852133  ],
       [ 1.22474487,  1.40357859,  1.40351318]])
plt.figure(figsize=(11, 3))

plt.subplot(1,3,1)
plt.scatter(X2[:, 0], X2[:, 1])
plt.subplot(1,3,2)
plt.scatter(X2[:, 0], X2[:, 2])
plt.subplot(1,3,3)
plt.scatter(X2[:, 1], X2[:, 2])
<matplotlib.collections.PathCollection at 0x62f8438>
output_6_1.png

自动正规化

from sklearn import preprocessing # 数据标准化模块
preprocessing.scale(X)

# 参数设置
# X:特征数据
# axis:数组的轴(维度)
# 将数据均值规范到0
# 将数据方差规范到1
preprocessing.scale(X, axis=0, with_mean=True, with_std=True)
array([[ 0.        , -0.85170713, -0.55138018],
       [-1.22474487, -0.55187146, -0.852133  ],
       [ 1.22474487,  1.40357859,  1.40351318]])

方法2:

min max normalization:适用于数据有明显边界的情况,如学生成绩,边界为0-100分

将特征数据按比例缩放到0-1区间之间,(也可以是-1到1)
公式:(x - Min) / (Max - Min)
对于方差非常小的属性可以增强其稳定性
维持稀疏矩阵中为0的条目
X.max(), X.min()
(120.0, -100.0)
X3 = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
X3
array([[0.5       , 0.        , 0.13333333],
       [0.        , 0.13294798, 0.        ],
       [1.        , 1.        , 1.        ]])
X3.max(), X3.min()
(1.0, 0.0)
plt.figure(figsize=(11, 3))

plt.subplot(1,3,1)
plt.scatter(X3[:, 0], X3[:, 1])
plt.subplot(1,3,2)
plt.scatter(X3[:, 0], X3[:, 2])
plt.subplot(1,3,3)
plt.scatter(X3[:, 1], X3[:, 2])
<matplotlib.collections.PathCollection at 0x9f4ce80>
output_14_1.png
# 自动计算
preprocessing.MinMaxScaler().fit_transform(X)
array([[0.5       , 0.        , 0.13333333],
       [0.        , 0.13294798, 0.        ],
       [1.        , 1.        , 1.        ]])
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容