精华内容
下载资源
问答
  • 今天写关于深度学习的代码时,里面要用服从标准正态分布的随机数初始权值,就是matlab里面那个randn函数,网上找了很多方法,最后发现C++本身就有自带的方法生成服从正态分布的随机数序列。下面给出C++代码: C++...

    今天写关于深度学习的代码时,里面要用服从标准正态分布的随机数初始化权值,就是matlab里面那个randn函数,网上找了很多方法,最后发现C++本身就有自带的方法生成服从正态分布的随机数序列。下面给出C++代码:
    C++代码:

    #include <iostream>
    #include <string>
    #include <random>
    #include <iomanip>//设置精度
    #include <fstream>
    using namespace std;
    int main()
    {
        //default_random_engine generator;//如果用这个默认的引擎,每次生成的随机序列是相同的。
        random_device rd;
        mt19937 gen(rd());
    
        //normal(0,1)中0为均值,1为方差
        normal_distribution<double> normal(0,1);
        ofstream ofs;
        //将结果写到文件
        string path="result.txt";
        ofs.open(path,ios::out);
    
        for(int n=0; n<10000; ++n) {
            for (int j = 0;j<20;++j)
            {
                ofs<<setprecision(4)<<normal(gen)<<" ";
            }   
        }
        ofs.close();
    
        return 0;
    }

    我将这个方法生成10 000*20个数,并将它们保存到”result.txt”中,然后将这个文件中的数据拷贝到matlab中,然后显示这组数据的灰度直方图,效果还不错。

    灰度直方图如下:

    展开全文
  • matlab归一化和标准化

    千次阅读 2020-03-27 22:32:43
    归一化是将数据限制在[0,1]之间,标准化是将数据限制在一定范围内,一般是指正态化,即均值是0,方差是1,即使数据不满足正态分布,亦可以使用这个方法。 归一化一般采用的是最大最小规范化对原始数据进行线性变换 ...

        归一化是将数据限制在[0,1]之间,标准化是将数据限制在一定范围内,一般是指正态化,即均值是0,方差是1,即使数据不满足正态分布,亦可以使用这个方法。

    归一化一般采用的是最大最小规范化对原始数据进行线性变换x=(X-Xmin)/(Xmax-Xmin)

    标准化一般采用的是Z-score规范化:就是均值是0,方差是1的正太分布。

    在matlab里面归一化的方法有:premnmx、postmnmx、tramnmx、mapminmax。premnmx指的是归一到[-1 1],tramnmx是变化测试集输入结果,postmnmx是转化测试集输出结果。

    mapminmax这个函数可以把矩阵的每一行归一到[a b].默认为[-1 1]. 

        [p_train,PS] = mapminmax(P_train,a,b). 其中P_train是需要归一的矩阵,train是结果

     当需要对另外一组数据归一时,比如SVM中的training data用以上方法归一,而test data就可以用下面的方法做相同的归一:t_train = mapminmax('apply',T_train,PS)

    当需要把归一的数据还原时,可以用以下命令: T_sim = mapminmax('reverse',t_sim,PS)

     %数据归一化
    [p_train,ps_input]=mapminmax(P_train,0,1);
    [t_train,ps_output]=mapminmax(T_train,0,1);
    p_test=mapminmax('apply',P_test,ps_input);
    %数据反归一化
    T_sim=mapminmax('reverse',t_sim,ps_output);
    
    

     

    展开全文
  • 此函数估计一个线性回归模型,其误差假定为正态。 用户可以指定误差项中的异方差性、估计权重以及对参数值的限制。 提供了解析梯度以提高速度和数值精度。 请注意,误差分布是用标准偏差而不是方差来参数的。
  • 标准化 即把一个向量的均值和标准差算出来,然后每一个分量都减去均值再除以标准差,得到的就是归一化之后的结果。 归一化之后的数据有正有负,服从均值为0方差为1的标准正态分布。 实验:归一化前后,数据分布不同 ...

    一,标准化

    即把一个向量的均值和标准差算出来,然后每一个分量都减去均值再除以标准差,得到的就是归一化之后的结果。

    归一化之后的数据有正有负,服从均值为0方差为1的标准正态分布

    python实现函数:

     def standardization(data):
        mu = np.mean(data, axis=0)
        sigma = np.std(data, axis=0)
        return (data - mu) / sigma
    

    其实一般机器学习中,把数据送入分类器比如SVM或者神经网络之前,都要对提取好的特征做标准化,虽然论文说的是normalization,但是其实做的是standardization。

    实验

    • 在matlab中生成一组正态分布的随机数
    a = random('Normal', 3,3, [1, 100]);%均值为3,标准差为3,1行100列
    figure,plot(a,'b'),hold on
    b = (a - mean(a))/std(a,0,2);%std(a,0,2)对于行向量求标准差,其实就是b=(a-3)/3
    plot(b,'r')
    

    在这里插入图片描述
    可以看到,数据原来的分布和标准化之后的是不一样的。标准化之后就是标准正态分布

    • 但是上面的实验只可以肉眼看到俩分布不一样,下面我们绘制出其概率密度分布曲线,能够非常明显的看到二者的分布区别:
    clear all;close all;clc
    a = random('Normal',10,5, [1, 1000]);
    figure,plot(a,'b'),hold on
    b = (a - mean(a))/std(a,0,2);%std(a,0,2)对于行向量求标准差
    plot(b,'r')
    figure,[f,xi] = ksdensity(a);
    plot(xi,f);hold on
    [f1,xi1] = ksdensity(b);
    plot(xi1,f1);
    

    在这里插入图片描述

    在这里插入图片描述
    黄色的是标准化以后的标准正太分布,而蓝色是之前的数据的分布。

    • 还可以用其他方式观察出二者分布的区别,比如下面的normplot函数,没有深入了解,只知道如果是正态分布会呈现一条直线,蓝色加号是数据点,所以两个分布都是正态分布,但是俩直线并不重合可见分布不一样。
    clear all;close all;clc
    x = -1:.01:1;
    a = random('Normal',1,5, [201, 1]);
    figure,plot(x,a,'b'),hold on
    b = (a - mean(a))/std(a,0,1);%std(a,0,2)对于行向量求标准差
    plot(x,b,'r')
    figure,normplot(a);hold on
    normplot(b);
    

    在这里插入图片描述

    结论:归一化前后,数据分布不同

    二,缩放

    先找到这个向量的最大值和最小值,以求出数据范围,然后把每一个分量减去最小值再除以范围,即把所有分量放到0-1的一个范围中,分布和原来也不一样!!!!

    python实现函数:

    # 缩放到[0,1]
    def normalization(data):
        _range = np.max(data) - np.min(data)
        return (data - np.min(data)) / _range
        
    # 缩放到[-1,1]
    def normalization(data):
        _range = np.max(abs(data))
        return data / _range
    

    实验

    clear all;close all;clc
    a = random('Normal',10,5, [1, 1000]);
    figure,plot(a,'b'),hold on
    range = max(a)-min(a);
    b = (a - min(a))/range;%归一化
    plot(b,'r')
    figure,[f,xi] = ksdensity(a);
    plot(xi,f);hold on
    [f1,xi1] = ksdensity(b);
    plot(xi1,f1);
    

    在这里插入图片描述
    在这里插入图片描述

    结论:数据分布和原来也不一样!

    总结:尽量用标准化而非缩放

    这么一看,还是标准化好用,不管什么数据都标准化为正态分布,毕竟正态分布大多数时候比较吃香,而缩放这种形式把数据分布改变了,而且目标分布不是统一的,太不好掌控了。

    展开全文
  • Matlab归一方法

    万次阅读 2018-05-10 10:41:09
    1,标准归一化。 将原始数据集归一化为均值为0、方差1的数据集,归一化公式...Matlab中使用mapstd函数:mapstd按行逐行地对数据进行标准化处理,将每一行数据分别标准化为均值为ymean(默认为0)、标准差为ystd(默...

    1,标准归一化。 

      将原始数据集归一化为均值为0、方差1的数据集,归一化公式如下: 

                                              x2=(x-μ)/δ

      其中μ为所有样本数据的均值,δ为所有样本数据的标准差。

     这种方式要求原始数据集的分布近似为正态(高斯)分布。否则归一化的效果很差。

        Matlab中使用mapstd函数:

      mapstd按行逐行地对数据进行标准化处理,将每一行数据分别标准化为均值为ymean(默认为0)、标准差为ystd(默认为1)的标准化数据,

      其计算公式是:y = (x-xmean)*(ystd/xstd) + ymean。

      如果设置的ystd=0,或某行的数据全部相同(此时xstd =0),存在除数为0的情况,则Matlab内部将此变换变为y = ymean。

    2,最大最小归一化。 

      将原始数据线性化的方法转换到[0 1]的范围,归一化公式如下: 

                                               x2=(x-xmin)/(xmax-xmin)

      其中xmax为样本数据的最大值,xmin为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致xmaxxmin

    的变化,需要重新定义。

    Matlab中使用mapminmax函数:

    mapminmax按行逐行地对数据进行标准化处理,将每一行数据分别标准化到区间[ymin, ymax]内,其计算公式是:y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin。YMIN和YMAX为调用mapminmax函数时设置的参数,如果不设置这两个参数,这默认归一化到区间[-1, 1]内。标准化处理后的数据为Y,PS为记录标准化映射的结构体。


    另外,可参考知乎的这一回答(特征工程的归一化):

    点击打开链接

    【如果数据较为稳定,不存在极端的最大值最小值,用归一化;

    如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响】

    展开全文
  • 这是一个创建归一二维正态分布(也称为高斯钟)的小程序。 用户可以选择确定分布的中心、标准差、输出矩阵的大小以及创建分布的区域。 我还没有包括为 x 轴和 y 轴设置不同 sigma 的选项,如果需要,可以随意添加...
  • DigitFD 从参数 mu 和 sigma [不可观察的正态分布] 的基准分布生成随机样本,基于来自具有有限但已知分辨率的仪器的(数字)测量。 这里, 测量值 = round( (mu + sigma * Z)/resolution ) * 分辨率, 其中 Z 是...
  • 数据变换 标准化 数据标准化主要功能就是消除变量间的量纲关系,从而使数据具有可比性 ...Z标准化:经过处理的数据符合标准正态分布,即均值为0,标准差为1, x=[1 2 3 4 5 ]; zscore(x) 离散化 ...
  • 在数据处理中 我们往往需要对计算得到的结果数据(如fMRI中...本文,笔者简单介绍3种在脑科学领域常用的数据归一化方法,即离差标准化、z-score标准化和Fisher r-z变换,并给出简单的Matlab程序。 离差标准化 离差标.
  • matlab函数

    2018-10-11 16:48:10
    变量值与平均数的差除以标准差的值-----标准分数,也称为标准化值或z分数,也叫标准差标准化,经过处理的数据符合标准正态分布,公式 ,, 1标准分数给出了一组数据中个数值的相对位置。比如,如果某个数值的标准分数...
  • 偏斜稳定分布是正态分布的推广,适用于具有幂律尾部的分布。 该包最初是 R 的 stabledist 包的一个端口,但算法已被广泛修改以提高数值稳定性。 动机 最初的目标是通过使用 C++ 来提高 stabledist 包的速度。 但是,...
  • 一些积分函数,积分上下限含有变量,并且不容易手工...其中,f(z) 为标准正态分布的密度函数,这个函数是一个关于 x 的函数,但由于这个积分人工没办法积出来,用符号函数必须用两个变量表示。若要简成单变量的函数,
  • (1) 按照【正态分布】生成一定范围内的随机数 A1=normrnd(0.9533,0.0022,[23,10000]); (均值,标准差,[行数,列数]) (2) 按【均匀分布】生成一定范围内的随机数 w1=unifrnd(0,1,10000,23); (上限,下限,...
  • 《本文同步发布于“脑之说”微信公众号,欢迎搜索关注~~》 在脑科学领域的研究中,我们往往需要对计算得到的结果数据...本文,笔者简单介绍3种在脑科学领域常用的数据归一化方法,即离差标准化、z-score标准化和Fisher
  • Matlab rand randn randint

    2015-03-30 19:48:00
    2.0matlab中randn函数是产生标准正态分布 3.0randint是产生整数随机数,默认为0和1 1.0rand %%%%%%%%%%%rand%%%%%%%%%%%%%%%% RAND Uniformly distributed random numbers. 标准化分布的随机数 RAN...
  • 随机样本 X 按其估计均值移动,并通过其归一估计标准差。 选择假定正态分布的测试箱 XP [-inf, -1.6:0.4:1.6, inf] 以避免统计不足。 设 E(x) 是 X 根据正态分布落入 XP 的预期频率,O(x) 是观察到的频率。
  • a=[1 10 1 10 1 10 1] --- 将此用作输入或使用您自己的一维数据此示例使用从维基百科中提取的高斯滤波器: kernel = [0.125 0.625 1 0.625 0.125] 对于标准正态分布注意:您可以扩展内核的大小,但是您需要更改 1)。...
  • 图像归一

    万次阅读 2014-05-11 16:41:27
    图片标准化通常是一个整体概念,要求把图片归一到均值为0,方差为1的情况下。 这个概念类识于一般正态分布向标准正态分布的转化:  (image-Mean)/Variance 其中, Mean和 Variance分别为矩阵的均值和方差。 ...
  • %产生x行y列随机正态矩阵,当样本为二维点时,可以让y为2即产生二维随机正态分布变量,作图显示点集 randn(x,y); 产生一个随机分布的指定均值和方差的矩阵:将randn产生的结果乘以标准差,然后加上期望均值即可。...
  • matlab:矩阵相关

    2020-06-14 22:32:24
    矩阵的构造 ...正态分布随机数矩阵 均值=0,标准差为1:randn(n)orrandn(n,m) 均值=a,标准差为b:b*rand(n)+aorb*rand(n,m)+a 实例:均值=5,标准差为10的10000个数据点。 >> tt=10*randn(10000,
  • 设 X(1),X(2),...,X(N) 是来自正态分布的样本 X1,X2,...,XN 的有序统计量。 让M = medium([X1,X2,...,XN]) 和 S = mad([X1,X2,..XN],1)/.6745 是(分别)平均值和标准偏差的稳健估计量分配。 Hampel 标识符是一个...
  • 标准计算,与正态分布数据的PCA一致,也称为GA 修剪过的变体,对异常值更健壮,称为TGA 该论文可从上面的主页获得,并在此处给出计算的详细信息。 资料库的内容 该存储库包含以下内容: GA和TGA的C ++多线程实现 EM-...
  • Matlab优化拟合曲线 ...本文基于 A=40和λ=0.5 且带正态分布伪随机误差的模型创建人工数据。 编写目标函数 编写一个函数,该函数可接受参数 A 和 lambda 以及数据 tdata 和 ydata,并返回模型 ...
  • 原来做配对或是双样本t检验的时候,都是用的matlab里面自带的ttest、ttest2来解决,...Fisher z-transform是对数据近似的变异稳定处理,z变换后近似服从均值为标准差为的正态分布。(内容参考:http://en.wikipedi
  • % randn - 标准正态分布随机数 % randperm - 1...n 随机排列 % regress - 线性回归 % classify - 统计聚类 % *trim - 坏数据祛除 % *specrnd - 给定分布律随机数生成 % *randrow - 整行随机排列 % *randmix - 随机...
  • t 检验假设这两个组是通过从两个正态分布的总体中抽取样本而产生的,并且我们正在调查这些总体的均值是否不同。 另一方面,随机测试假设一些初始个体被随机分配到两个治疗组。 要检查的排列数量很快会变得非常大...
  • matlab生成谐波代码基于SSVEP的BCI的直接ITR优化 ...使用rpy2的原因是我们需要计算偏态正态分布累积分布函数值,而我在相应的scipy函数中遇到了内存泄漏错误。 如果您在安装rpy2时遇到问题,请尝试按照以下步骤操作
  • MATLAB数学建模工具箱

    热门讨论 2013-05-20 15:06:10
    % randn - 标准正态分布随机数 % randperm - 1...n 随机排列 % regress - 线性回归 % classify - 统计聚类 % *trim - 坏数据祛除 % *specrnd - 给定分布律随机数生成 % *randrow - 整行随机排列 % *randmix - 随机...
  • 的高斯(正态分布生成随机数的 1000000x1(一百万乘一)向量。使用 Matlab 的 randn 函数。 使用循环将 1 添加到上一个列表中的每个值。 要确定循环次数,请使用 Matlab 的 size 函数。 计时此操作并打印代码中的...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

matlab正态分布标准化

matlab 订阅