0
点赞
收藏
分享

微信扫一扫

数据挖掘算法原理与实践第三关:归一化

Silence潇湘夜雨 2022-01-21 阅读 60

本关任务:利用sklearn对数据进行归一化。

为什么使用归一化

归一化是缩放单个样本以具有单位范数的过程。归一化能够加快模型训练速度,统一特征量纲,避免数值太大。值得注意的是,归一化是对每一个样本做转换,所以是对数据的每一行进行变换。而之前我们讲过的方法是对数据的每一列做变换。

L1范数归一化

L1范数就是向量各元素的绝对值之和,也被称为是"稀疏规则算子,有两个好处:
1、特征选择
2、可解释性

代码实现

from sklearn.preprocessing import normalize
data = np.array([[-1,0,1],
                 [1,0,1],
                 [1,2,3]])
data = normalize(data,'l1')

L2范数归一化

L2范数就是欧几里何距离,以L2范数作为正则项可以得到稠密解,即每个特征对应的参数w

代码实现:

from sklearn.preprocessing import normalize
data = np.array([[-1,0,1],
                 [1,0,1],
                 [1,2,3]])
data = normalize(data,'l2')

编程要求

根据提示,在右侧编辑器Begin-End处补充Python代码,实现数据归一化方法,我们会使用实现好的方法对数据进行处理。

测试说明
我们会调用你实现的方法对数据进行处理,如数据为:

data = np.array([[-1,0,1],
[1,0,1],
[1,2,3]])
使用L1归一化则输出为:

array([[-0.5 , 0. , 0.5 ],
[ 0.5 , 0. , 0.5 ],
[ 0.167, 0.333, 0.5 ]])
使用L2归一化则输出为:

array([[-0.707, 0. , 0.707],
[ 0.707, 0. , 0.707],
[ 0.267, 0.535, 0.802]])
数据处理正确则视为通关。

# -*- coding: utf-8 -*-

from sklearn.preprocessing import normalize

#实现数据归一化方法
def normalization(x,y):
    '''
    x(ndarray):待处理数据
    y(int):y等于1则使用"l1"归一化
           y等于2则使用"l2"归一化
    '''
    #********* Begin *********#
    if y==1:
           data = normalize(x,'l1')
    elif y==2:
           data = normalize(x,'l2')
    return data
    #********* End *********#

举报

相关推荐

0 条评论