zoukankan      html  css  js  c++  java
  • 机器学习 归一化 学习以及代码

    在机器学习的算法训练中,有很多数据的特征值不止一个,特征值中有些属性的数字过大,从而对计算结果的影响太大,但是实际情况是每个属性都同等重要,这时候就要处理这种不同取值范围的特征值,通常采用数值归一化,将取值范围处理为0-1或者-1-1之间。 
    将任意取值范围的特征值转化为0–1区间内的值,公式如下:

    newValue=(oldValue-min)/(max-min)

    其中oldValue为原始数据 
    min、max分别是原始数据里最小、最大值 
    例如:有一组数据如下 
    400 
    134000 
    20000 
    32000 
    归一化的过程是: 
    400归一化之后的值newValue=(400-400)/(134000-400) 
    134000归一化之后的值newValue=(134000-400)/(134000-400) 
    20000归一化之后的值newValue=(20000-400)/(134000-400) 
    32000归一化之后的值newValue=(32000-400)/(134000-400) 
    上python代码:

    def autoNorm(dataSet):
        min_value=dataSet.min(0)#取出数据集中的最小值
        max_value=dataSet.max(0)#取出数据集中的最大值
        range=max_value-min_value#计算取值范围
        normDataSet=zeros(shape(dataSet))#初始化一个矩阵,该矩阵和所给数据集维度相同用于存放归一化之后的数据
        m=dataSet.shape[0]#取出数据集的行数
        normDataSet=dataSet-tile(min_value,(m,1))#这里tile()函数创建了一个以min_value为值的m行列向量,然后计算oldValue-min_value
        normDataSet=normDataSet/tile(range,(m,1))#特征值相除得到归一化后的数值
        return normDataSet#返回归一化后的数据
    

    说明:dataSet是指数据中某一列的数值

  • 相关阅读:
    python定时任务模块APScheduler
    from urllib import parse模块的使用
    go操作空指针导致supervisor进程服务挂机的坑
    docker快速安装rabbitmq
    利用redis的bitmap实现用户签到功能
    linux安装splunk-enterprise
    python封装email模块
    golang模块viper读取配置文件
    Tangram: Optimized Coarse-Grained Dataflow for Scalable NN Accelerators 阅读笔记
    将博客搬至CSDN
  • 原文地址:https://www.cnblogs.com/zhangkele/p/8111162.html
Copyright © 2011-2022 走看看