精华内容
下载资源
问答
  • 数据挖掘:数据清洗——数据噪声处理

    万次阅读 多人点赞 2020-02-19 14:43:42
    数据噪声(Noise):数据集中的干扰数据(场景描述不准确的数据),即测量变量中的随机误差或方差。 二、噪声数据与离群点的区别 观测量(Measurement) = 真实数据(True Data) + 噪声 (Noise):而离群点(Outlier)属于...

    数据挖掘:数据清洗——数据噪声处理

    在这里插入图片描述

    一、什么是数据噪声?

    数据噪声(Noise):数据集中的干扰数据(对场景描述不准确的数据),即测量变量中的随机误差或方差

    二、噪声数据与离群点的区别

    观测量(Measurement) = 真实数据(True Data) + 噪声 (Noise):而离群点(Outlier)属于观测量,既有可能是真实数据产生的,也有可能是噪声带来的,但是总的来说是和大部分观测量之间有明显不同的观测值。

    数据噪声与离群点有很多相同的地方。之间没有太过明确的定义,主要看应用的场景。如在信用卡诈骗中,我们通常会关注那些少量的异常数据,此时数据是具有探索意义的。而在一般的场景下,离群点和噪声都需要剔除,一般使用的方法也有很多相似之处,如3标准差去噪,dbscan去噪,孤立森林等。

    三、产生原因

    同异常值,也有机器因素和人为因素。这里不做过多说明。

    四、处理的必要性

    对模型训练有影响很多算法,不仅会增加数据量,也会加大计算量,增加计算机内存和计算开销,也会增大计算误差。特别是线性算法,都是通过迭代来获取最优解的,如果数据中含有大量的噪声数据,将会大大的影响数据的收敛速度,甚至对于训练生成模型的准确也会有很大的副作用。

    五、处理方法

    常见的噪声数据的处理方法:

    1. 人工检查
    2. 统计模型;
    3. 分箱;
    4. 聚类;
    5. 回归 。

    5.1 人工检查

    根据业务和对数据本身的理解,人为的进行数据筛选。

    5.2 统计模型

    对于正态数据,利用3个标准差原则进行去噪,或使用四分位差进行去噪。
    对于偏态数据用分箱则效果更好

    5.3 分箱

    分箱方法是一种简单常用的预处理方法,通过考察相邻数据来确定最终值。所谓“分箱”,实际上就是按照属性值划分的子区间,如果一个属性值处于某个子区间范围内,就称把该属性值放进这个子区间所代表的“箱子”内。把待处理的数据(某列属性值)按照一定的规则放进一些箱子中,考察每一个箱子中的数据,采用某种方法分别对各个箱子中的数据进行处理
    在采用分箱技术时,需要确定的两个主要问题就是:

    1. 如何分箱
    2. 如何对每个箱子中的数据进行平滑处理。

    分箱的方法有4种:等深分箱法、等宽分箱法、用户自定义区间法和最小熵法。

    等宽分箱法容易受异常值影响,分箱后可能有的区域值很多,有的很少。分配不均匀。

    等深/等频分箱法则容易将相同的值分到不同的箱中。

    5.3.1 分箱方法

    例:客户收入属性income排序后的值(人民币元):800 1000 1200 1500 1500 1800 2000 2300 2500 2800 3000 3500 4000 4500 4800 5000。

    5.3.1.1 统一权重

    也称等深分箱法,将数据集按记录行数分箱,每箱具有相同的记录数,每箱记录数称为箱子的深度。这是最简单的一种分箱方法。每个箱子的深度(箱内数据的个数)统一

    统一权重:设定权重(箱子深度)为4,分箱后

    箱1:800 1000 1200 1500

    箱2:1500 1800 2000 2300

    箱3:2500 2800 3000 3500

    箱4:4000 4500 4800 5000

    5.3.1.2 统一区间

    也称等宽分箱法,使数据集在整个属性值的区间上平均分布,即每个箱的区间范围是一个常量,称为箱子宽度。

    统一区间:设定区间范围(箱子宽度)为1000元人民币,分箱后

    箱1:800 1000 1200 1500 1500 1800

    箱2:2000 2300 2500 2800 3000

    箱3:3500 4000 4500

    箱4:4800 5000

    5.3.1.3 用户自定义区间

    用户可以根据需要自定义区间,当用户明确希望观察某些区间范围内的数据分布时,使用这种方法可以方便地帮助用户达到目的。
    用户自定义:如将客户收入划分为1000元以下、1000-2000、2000-3000、3000-4000和4000元以上几组,分箱后

    箱1:800

    箱2:1000 1200 1500 1500 1800 2000

    箱3:2300 2500 2800 3000

    箱4:3500 4000

    箱5:4500 4800 5000

    5.3.1.4 最小熵法

    熵是不确定性的度量,最大熵原理的意思就是说我们在对结果进行推测时,要承认我们的无知,所以要最大化不确定性,以得到最客观的结果。而对于最小熵原理,则是要最小化每个分箱内的不确定性。跟下面介绍的聚类方法不一样,这里的无监督模型是为了更好的分组,进而进行数据平滑处理。而后面的聚类是直接把噪声数据删除。
    链接:最小熵原理

    5.3.2 数据平滑方法

    数据平滑方法又可以细分为:平均值平滑、边界值平滑和按中值平滑。
    排序后的数据:4, 8, 9, 15, 21, 21, 24, 25, 26, 28, 29, 34。以下例子按照等深分箱处理。

    5.3.2.1 平均值平滑

    对同一箱值中的数据求平均值,用平均值替代该箱子中的所有数据。

    5.3.2.2 边界值平滑

    用距离较小的边界值替代箱中每一数据。
    在这里插入图片描述

    5.3.2.3 中值平滑

    取箱子的中值,用来替代箱子中的所有数据。
    在这里插入图片描述

    5.4 聚类

    可以通过如聚类如k-means来检测离群点。聚类将类似的值组织成群或“簇”。那些落在簇之外的值(孤立点),这些孤立点被视为噪声。同离群点的处理方式。
    k均值聚类法将观测值聚为k类,但在聚类过程中需要保证分箱的有序性:第一个分箱中所有观测值都要小于第二个分箱中的观测值,第二个分箱中所有观测值都要小于第三个分箱中的观测值,等等。
    在这里插入图片描述

    5.5 回归

    可以用一个函数拟合数据来光滑数据。这种技术称之为回归。即让数据适合一个函数来平滑数据,通过建立数学模型来预测下一个数值。通过,包括线性回归和非线性回归。

    1. 线性回归涉及找出拟合两个属性(或变量)的“最佳”直线,使得一个属性可以用来预测另一个。
    2. 多元线性回归是线性回归的扩充,其中涉及的属性多余两个,并且数据拟合到一个多维曲面。

    六、利用Python进行数据离散化

    pandas中的cut(),qcut()用来把一组数据分割成离散的区间。

    6.1 使用pd.cut()

    pd.cut(),按照数据值的大小(从最大值到最小值进行等距划分)进行划分。每个间隔段里的间隔区间都是相同的,统一区间

    pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise')
    
    • 参数含义
      补充:duplicates:是否允许重复区间。有两种选择:raise:不允许,drop:允许。
      在这里插入图片描述
    • 返回值
      out:一个pandas.Categorical, Series或者ndarray类型的值,代表分区后x中的每个值在哪个bin(区间)中,如果指定了labels,则返回对应的label。
      bins:分隔后的区间,当指定retbins为True时返回。
    import numpy as np
    import pandas as pd
    
    ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年龄数据
    
    # 将ages平分成5个区间,等宽分箱
    pd.cut(ages, 5)
    [(0.901, 20.8], (0.901, 20.8], (0.901, 20.8], (20.8, 40.6], (20.8, 40.6], ..., (0.901, 20.8], (0.901, 20.8], (20.8, 40.6], (20.8, 40.6], (20.8, 40.6]]
    Length: 16
    Categories (5, interval[float64]): [(0.901, 20.8] < (20.8, 40.6] < (40.6, 60.4] < (60.4, 80.2] < (80.2, 100.0]]
    
    #将ages平分成5个区间并指定labels
    pd.cut(ages, 5, labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])
    [婴儿, 婴儿, 婴儿, 青年, 青年, ..., 婴儿, 婴儿, 青年, 青年, 青年]
    Length: 16
    Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年]
    
    # 给ages指定区间进行分割
    pd.cut(ages, [0,5,20,30,50,100], labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])
    [婴儿, 婴儿, 青年, 壮年, 壮年, ..., 青年, 青年, 中年, 中年, 壮年]
    Length: 16
    Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年]
    
    #返回分割后的bins,令retbins=True即可
    pd.cut(ages, [0,5,20,30,50,100], labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"],retbins=True)
    ([婴儿, 婴儿, 青年, 壮年, 壮年, ..., 青年, 青年, 中年, 中年, 壮年]
     Length: 16
     Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年],
     array([  0,   5,  20,  30,  50, 100]))
    
    #只返回x中的数据在哪个bin,令labels=False即可
    #第一个0表示1在第0个bin中。
    pd.cut(ages, [0,5,20,30,50,100], labels=False)
    array([0, 0, 1, 3, 3, 1, 4, 4, 4, 4, 4, 1, 1, 2, 2, 3], dtype=int64)
    
    df_cut['data'] = ages
    df_cut['data_分组'] = pd.cut(ages,5)
    df_cut['data_标签分组'] = pd.cut(ages,5,labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])
    df_cut['data_标签组别'] = pd.cut(ages, [0,5,20,30,50,100], labels=False)
    

    在这里插入图片描述

    6.2 使用pd.qcut()

    pd.qcut(),按照数据出现频率百分比划分,比如要把数据分为四份,则四段分别是数据的0-25%,25%-50%,50%-75%,75%-100%,每个间隔段里的元素个数都是相同的,统一权重

    pd.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise') 
    

    在这里插入图片描述

    # 将ages平分成5个区间
    pd.qcut(ages,5)
    [(0.999, 12.0], (0.999, 12.0], (0.999, 12.0], (36.0, 62.0], (25.0, 36.0], ..., (12.0, 25.0], (12.0, 25.0], (12.0, 25.0], (25.0, 36.0], (25.0, 36.0]]
    Length: 16
    Categories (5, interval[float64]): [(0.999, 12.0] < (12.0, 25.0] < (25.0, 36.0] < (36.0, 62.0] < (62.0, 100.0]]
    
    # 查看区间内的数据个数,等深分箱
    pd.qcut(ages,5).value_counts()
    (0.999, 12.0]    4
    (12.0, 25.0]     3
    (25.0, 36.0]     3
    (36.0, 62.0]     3
    (62.0, 100.0]    3
    dtype: int64
    
    #将ages平分成5个区间并指定labels
    pd.qcut(ages,5,labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])
    [婴儿, 婴儿, 婴儿, 壮年, 中年, ..., 青年, 青年, 青年, 中年, 中年]
    Length: 16
    Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年]
    
    #返回分割后的bins,令retbins=True即可
    pd.qcut(ages,5,labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"],retbins=True)
    [婴儿, 婴儿, 婴儿, 壮年, 中年, ..., 青年, 青年, 青年, 中年, 中年]
    ([婴儿, 婴儿, 婴儿, 壮年, 中年, ..., 青年, 青年, 青年, 中年, 中年]
     Length: 16
     Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年],
     array([  1.,  12.,  25.,  36.,  62., 100.]))
     
    #只返回x中的数据在哪个bin,令labels=False即可
    #第一个0表示1在第0个bin中。
    pd.cut(ages, 5, labels=False)
    array([0, 0, 0, 1, 1, 0, 2, 3, 3, 4, 4, 0, 0, 1, 1, 1], dtype=int64)
    
    df_qcut = pd.DataFrame()
    df_qcut['data'] = ages
    df_qcut['data_分组'] = pd.qcut(ages,5)
    df_qcut['data_标签分组'] = pd.qcut(ages,5,labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])
    df_qcut['data_标签组别'] = pd.qcut(ages, 5, labels=False)
    

    在这里插入图片描述

    七、总结

    噪声和离群点之间有一定的差别,而具体的处理要看应用场景是什么。
    存在数据噪声,会增大数据量,影响模型运行速度,并对准确率造成影响。
    处理方法有

    1. 人工检查
    2. 统计模型;
    3. 分箱;
    4. 聚类;
    5. 回归 。

    对于分箱,可先使用pandas中的cut()和qcut(),进行分箱,然后通过mean(),median()编写数据平滑的函数,作为替代值。具体哪种分箱方式,要看应用的场景。如年龄,等宽分箱比较合理。
    聚类和回归可使用sklearn中的包实现。其中回归通过对数据拟合预测的方式,来甄别噪声数据。

    八、参考文献

    https://blog.csdn.net/M_WBCG/article/details/79117085
    https://blog.csdn.net/poi10086/article/details/82497065
    https://blog.csdn.net/qq_32572085/article/details/89704051
    https://www.zhihu.com/question/37506766
    https://www.cnblogs.com/nicetoseeyou/p/10655422.html
    https://www.cnblogs.com/sench/p/10128216.html
    https://www.cnblogs.com/nicetoseeyou/p/10655422.html

    展开全文
  • Dicom数据的一点理解

    千次阅读 2017-10-17 09:37:58
    首先推荐一款用于解析显示Dicom类型数据的软件:RadiAntDICOMViewer,可以很全的显示Dicom数据的tag值,简单方便很实用。 Dicom数据由文件信息和数据两部分组成: 1、数据:Dicom数据的原始像素值(pixel value)是...

    首先推荐一款用于解析显示Dicom类型数据的软件:RadiAntDICOMViewer,可以很全的显示Dicom数据的tag值,简单方便很实用。
    Dicom数据由文件信息和数据两部分组成:
    1、数据:Dicom数据的原始像素值(pixel value)是没有实际意义的,所以我们常用的是Dicom数据的输出像素,即(CT 值),对应关系如下:
    Hu=pixel_val*rescale_slope+rescale_intercept;
    pixel_val是第i个像素的灰度值,rescale_slope)(通常为1)与rescale_intercept(通常为-1024)是两个Tag值,可以从Dicom的头信息中直接读取。Hu是第i个像素的CT值
    人体特定组织的CT值范围是固定的。所以转换之后可以再进行阈值分割等操作,可以成功的从Dicom数据中分割出人体骨骼、软组织等。
    原始扫描出的 Dicom数据可能并不是规则的矩形,如我遇到的便是一个圆柱形,为了后续分析,构建一个长方体,无效区域填充了-2000,但是边界会有一些噪声,CT值处于有效值最小~-3024之间,但数量很少。并且这样算出的CT值最小值会很小,没有实际意义,所以最终的方案是CT值小于-1024的都置成-1024了(-1024往往是无效的数据,所以分割组织时一般不考虑)
    2、头信息(Tag值):
    可以参考http://blog.csdn.net/inter_peng/article/details/46513847,同事写的,还不错。

    展开全文
  • 肌电信号的数据理解

    千次阅读 2021-01-20 23:35:49
    本文主要是解释说明肌电数据,只有理解数据的格式和意义,才能更进一步的去处理数据,从自采的肌电数据角度和Ninapro公共数据集的角度来理解数据。 一、基于自采肌电数据理解 这里用于采集设备的肌电设备是...

    目录

    一、基于自采肌电数据的理解

    二、基于Ninapro肌电数据的理解


    本文主要是解释说明肌电数据,只有理解了数据的格式和意义,才能更进一步的去处理数据,从自采的肌电数据角度和Ninapro公共数据集的角度来理解数据。

    一、基于自采肌电数据的理解

    这里用于采集设备的肌电设备是基于国产的ELONI肌电仪,主要的参数是16通道(袖套/贴片电极兼容),采样率1000-2000Hz,带通滤波器范围是20Hz-500Hz,陷波滤波器滤除50Hz的工频噪声。所保存的数据格式如下所示:

    这是一个txt文件,18列,N行。用Matlab读取这个文件成一个变量

    filename = 'EMG20190093003113.txt';
    data_all = importdata(filename);

    这段数据的解释为每一行表示为每隔0.001s读取的sample,1-16列对应的是16个通道的数据,第17位和第18位是数据的时间同步位,因为设备采用双蓝牙来处理数据,两个同步位一致表示数据有效(仅仅是本设备)。上述的信号大概采集了86s的数据。在实际应用中,需要剔除17和18列的数据,因此处理完的数据大小是: [N Samples] x [16 Channels]。每个通道产生的值都是电位幅值,可以表征信号强度的。我们取出其中一个通道的信号绘图如下:

    这个信号比较容易理解,当然了,越是容易理解的数据,对于学习者而言若容易建立信心,如果大家能够有自己的设备去采集自己的数据的话,那样理解的更加透彻。

    二、基于Ninapro肌电数据的理解(DB1)

    Ninapro(全称Non-Invasive Adaptive Prosthetics)数据集是目前表面肌电研究领域比较有代表性的公开数据集,该数据经过不断的拓展,目前已经发展到DB9了,下载网址是www.ninapro.hevs.cn,特别注意要先登录才能有下载权限。Ninapro数据集中包含了健康受试者和残肢患者的数据,用于采集的传感器包括肌电传感器、数据手套、力传感器、倾角仪、3轴加速度计等,当然不是所有DB都用到了所有的传感器,对于DB1,只用到了肌电和数据手套。本文具体对DB1进行说明。

    DB1中的具体参数:

    受试者:27个健康人

    采集动作:52个动作(不含rest),分为:

    (A)12个基本的手指动作

    (B)8个基本手部动作(等长和等张收缩)

    (C)9个基本的手腕动作

    (D)23个抓握和功能性动作

    采集装置参数

    (A)运动学数据:融合了22个传感器的Cyberglove II dataglove(数据手套),目的是用于手指位置信息,该设备将这22个关节角度表示为8位值,平均分辨率小于1度,具体取决于受试者手的大小、手套的正确佩戴以及所考虑关节的旋转范围。除了Cyberglove之外,还提供了标准的商用的2轴的倾角仪,附着在受试者的手腕上,用于手机手腕方向。

    (B)表面肌电数据:十个通道(差分双电极)的OttoBock MyoBock,提供了对采集信号的放大、带通滤波和校正(rectified)。原始肌电信号的带宽为15-500Hz。

    采集方式

    用户保持特定坐姿,面向演示屏幕,将EMG电极、数据手套和倾角仪穿戴在右手上,用户根据演示屏幕上的动作重复特定的动作。在经过预先的训练之后,每一类的动作将会连续进行10次重复来收集数据。每次动作将持续5s,两个动作之间有3s的休息时间。在规整数据的时候,四个动作类别将会被归纳到3个exercise中,其中第二个和第三个类别将被分组到exercise 2中。请注意,为了诱发重复的、几乎无意识的运动,序列是有意不随机化的。

    数据说明

    每个subject的数据都有三个文件组成:S1_A1_E1.mat,S1_A1_E2.mat,S1_A1_E3.mat,分别包含了exercise 1 - 3的动作数据。

    加载其中一个mat文件如下:

    主要说明一下repetition,rerepetition,stimulus,restimulus。其中rerepetition和restimulus都是经过矫正后的数据,毕竟在采集过程中总会存在人的反应时间和软件延迟的影响。

    上面左图是repetition(exercise 1,一共12个动作),可以看出来采集方式是每个动作重复采集10次,纵轴数值表征的是每个动作的重复Index。上面右图是restimulus(exercise 1,一共12个动作),这个比较重要,可以看做是label,数值由1-12标记。

    上图是emg数据中第1个通道的时序图,一共12个动作,每个动作重复10次,因此原则上图中应该有120个脉冲(动作)。

    数据读取(MATLAB)

    function NinaproMatrix = LoadNinaproDB( DataPath )
    %Parameters:
    %   DataPath: 原始数据路径
    %Returns:
    %   NinaproMatrix: 返回切割好的steady数据
    %   NinaproTransientMatrix: 返回切割好的transient数据
    NinaproMatrix = cell(1,27);
    SubjectNum = 27;
    
    %% 从每个subject的目录中读取三个exercise,并将数据和标签对照着取出来
    for k = 1:SubjectNum
        CharSubject = ['s' num2str(k)];
        UpperSubject = upper(CharSubject);
        % 读取第一个Exercise
        FileName_E1 = [UpperSubject '_A1_E1.mat'];
        FileLocation_E1 = fullfile(DataPath, CharSubject, FileName_E1);
        load(FileLocation_E1);
        emg_E1 = emg;
        restimulus_E1 = restimulus;
        stimulus_E1 = stimulus;
        % 读取第二个Exercise
        FileName_E2 = [UpperSubject '_A1_E2.mat'];
        FileLocation_E2 = fullfile(DataPath, CharSubject, FileName_E2);
        load(FileLocation_E2);
        emg_E2 = [emg_E1;emg];
        for i=1:length(restimulus)
            if(restimulus(i) ~= 0)
                restimulus(i) = restimulus(i) + 12; % 从index=13开始
            end
        end
        restimulus_E2 = [restimulus_E1; restimulus];
        stimulus_E2 = [stimulus_E1;stimulus];
        % 读取第三个Exercise
        FileName_E3 = [UpperSubject '_A1_E3.mat'];
        FileLocation_E3 = fullfile(DataPath, CharSubject, FileName_E3);
        load(FileLocation_E3);
        emg_E3 = [emg_E2;emg];
        for i=1:length(restimulus)
            if(restimulus(i) ~= 0)
                restimulus(i) = restimulus(i) + 29; % 从index=30开始
            end
        end
        restimulus_E3 = [restimulus_E2;restimulus];
        stimulus_E3 = [stimulus_E2; stimulus];
        % 变换名称
        emg = emg_E3;
        restimulus = restimulus_E3;
        NumChannels = size(emg,2);   %通道数量
        NinaproMatrix{1,k} = restimulus; % cell的第一行表示label
        NinaproMatrix{2,k} = emg; % cell的第二行表示data
    end
    

    读取的数据格式是2x27 cell。第一行表示label,第二行表示data,每一列表示一个subject。当然,对数据的读取方式还有很多种。

     

    展开全文
  • 数据预处理--噪声

    万次阅读 2018-01-20 21:55:19
    数据集中的干扰数据场景描述不准确的数据) 2.噪声怎么产生的?举个例子:手机信号来自于基站发射的电磁波,有的地方比较强,有的地方比较弱。运营商的工程师会负责统计不同区域信号强弱来进行网络规划,工程师...

    1.噪声是什么?数据集中的干扰数据(对场景描述不准确的数据)

    2.噪声怎么产生的?举个例子:手机信号来自于基站发射的电磁波,有的地方比较强,有的地方比较弱。运营商的工程师会负责统计不同区域信号强弱来进行网络规划,工程师采集信号的方法就是将一个信号接受终端固定到车上,然后开车绕着基站转,信号终端就会自动采集不同区域的信号强度,生成一份数据。但是如果车在采集过程中遇到了突发事件、急刹车,就可能会对信号采集造成一定的影响,生成噪声数据。

    3.噪声对模型训练有什么影响?很多算法,特别是线性算法,都是通过迭代来获取最优解的,如果数据中含有大量的噪声数据,将会大大的影响数据的收敛速度,甚至对于训练生成模型的准确也会有很大的副作用。

    4.去除噪声的方法:根据不同的业务场景有不同的处理方法,这里只提出正态分布3σ原则。正态分布也叫常态分布,是连续随机变量概率分布的一种,自然界、人类社会、心理、教育中大量现象均按正态分布,如能力的高低、学生成绩的好坏都属于正态分布,我们可以把数据集的质量分布立杰成一个正态分布。它会随着随机变量的平均数、标准差与单位不同而有不同的分布形态。正态分布可以表示成一种概率密度函数。

    正态分布公式
    • formula
    其中, σ可以表示成数据集的标准差,μ代表数据集的均值,x代表数据集的数据。相对于正常数据,噪声数据可以理解为小概率数据。


    正态分布具有这样的特点:x落在(μ-3σ,μ+3σ)以外的概率小于千分之三。根据这一特点,我们可以通过计算数据集的标准差,把三倍于数据集的标准差的点设想为噪声数据排除。

    示例
    from __future__ import division
    
    mat = [[19, 26, 63], [13, 62, 65], [16, 69, 15], [14, 56, 17], [19, 6, 15], [11, 42, 15], [18, 58, 36], [12, 77, 33],
           [10, 75, 47], [15, 54, 70], [10017, 1421077, 4169]]
    
    
    # 获得矩阵的字段数量
    def width(lst):
        i = 0;
        for j in lst[0]:
            i += 1
        return i
    
    
    # 得到每个字段的平均值
    def GetAverage(mat):
        n = len(mat)
        m = width(mat)
        num = [0] * m
        for i in range(0, m):
            for j in mat:
                num[i] += j[i]
            num[i] = num[i] / n
        return num
    
    
    # 获得每个字段的标准差
    def GetVar(average, mat):
        ListMat = []
        for i in mat:
            ListMat.append(list(map(lambda x: x[0] - x[1], zip(average, i))))
    
        n = len(ListMat)
        m = width(ListMat)
        num = [0] * m
        for j in range(0, m):
            for i in ListMat:
                num[j] += i[j] * i[j]
            num[j] /= n
        return num
    
    # 获得每个字段的标准差
    def GetStandardDeviation(mat):
        return list(map(lambda x:x**0.5,mat))
    # 对数据集去噪声
    def DenoisMat(mat):
        average = GetAverage(mat)
        variance = GetVar(average, mat)
        standardDeviation=GetStandardDeviation(variance)
        section = list(map(lambda x: x[0] + 3*x[1], zip(average, standardDeviation)))
        n = len(mat)
        m = width(mat)
        num = [0] * m
        denoisMat = []
        noDenoisMat=[]
        for i in mat:
            for j in range(0, m):
                if i[j] > section[j]:
                    denoisMat.append(i)
                    break
                if j==(m-1):
                    noDenoisMat.append(i)
        print("去除完噪声的数据:")
        print(noDenoisMat)
        print("噪声数据:")
        return denoisMat
    
    
    if __name__ == '__main__':
        print("初始数据:")
        print(mat)
        print(DenoisMat(mat))
    


    数据过滤:一组数据中,里面有一个字段对于结果没有任何的意义,就可以将该字段过滤掉。就例如一组数据的用户ID不具备描述行为特性的含义。
    展开全文
  • 本文探讨了时钟公差Σ-Δ ADC中低通抽样和数字滤波器的影响,特别是滤波器陷波频率的影响。窄带Σ-Δ应用通常利用数字滤波器提供50Hz、60Hz或50Hz/60Hz的噪声抑制。在选择外部时钟晶体或内部时钟时,了解时钟...
  • 本文探讨了时钟公差Σ-ΔADC中低通抽样和数字滤波器的影响,特别是滤波器陷波频率的影响。窄带Σ-Δ应用通常利用数字滤波器提供50Hz、60Hz或50Hz/60Hz的噪声抑制。在选择外部时钟晶体或内部时钟时,了解时钟频率...
  • RF衰减是无线设计中的常见电路,本应用笔记详细描述了几种采用PIN二极管和电流源DAC控制RF衰减的方法。
  • 对白噪声理解

    千次阅读 2011-09-11 09:12:34
    对白噪声理解    在信号处理中,信号与噪声是一对永远的对手。如果没有噪声的话,信号处理则要简单得多。可以说,正是因为现实环境中不可避免地存在噪声,才推动人们去不断地开发新的信号处理方法。信号处理...
  • GAN噪声理解

    2021-04-04 13:40:40
    链接: link.
  • 数据预处理之python实现噪声处理

    千次阅读 多人点赞 2020-03-18 10:35:18
    数据集中的干扰数据场景描述不准确的数据) 2.噪声怎么产生的?举个例子:手机信号来自于基站发射的电磁波,有的地方比较强,有的地方比较弱。运营商的工程师会负责统计不同区域信号强弱来进行网络规划,工程师...
  • 噪声和失真是工程师在设计高精度模拟系统常见的两个令人挠头的问题。但是,当我们查看一个运算放大器数据表中的总谐波失真和噪声 (THD+N) 数值时,也许不能立即搞清楚哪一个才是你要应对的敌人:噪声还是失真?
  • 所有的ADC都会具有一定的噪声,这包括输入参考噪声(ADC固有噪声)和量化噪声(ADC转换时产生...由于当前更高分辨率的迫切需求,设计者必须更好地理解ADC噪声、ENOB、有效分辨率,以及信噪比(SNR)。本文的目的正基于此。
  • 我们可以轻松地处理频域中的数据,例如:去除噪声波。 之后,我们可以使用这个逆方程将频域数据转换回时域波: 让我们暂时忽略 FT 方程的复杂性。 假设我们已经完全理解数学方程的含义,让我们使用傅立叶变换在 ...
  • 也许你也会跟我一样认为典型数据表中的某些规格难以理解,这是因为其中涵盖了一些你不太熟悉的隐含惯例。许多RF系统工程师而言,其中一种规格便是锁相环(PLL)中的相位噪声。当信号源被用作本机振荡器(LO)或高速...
  • 数据预处理_数据清理(缺失值、噪声等详细处理)

    万次阅读 多人点赞 2018-08-11 10:57:21
    实际的数据库极易受噪声、缺失值和不一致数据的侵扰,因为数据库太大,并且多半来自多个异种数据源。低质量的数据将会导致低质量的挖掘结果。有大量的数据预处理技术: - - 数据清理:可以用来清楚数据中的噪声,...
  • 对数据挖掘的认识.pdf

    2020-11-22 09:02:16
    对数据挖掘的认识 一数据挖掘的理解 数据挖掘是从大量的不完全的有噪声的模糊的随机的 数据集中识别出有效的新颖的潜在有用的以及最终可理解的 知识的非平凡过程这个定义包括几层含义数据源必须是真实 的大量的含...
  • 偏差和方差以及噪声理解

    千次阅读 2017-10-02 10:09:01
    噪声:表达了在当前任务上任何学习算法所能达到的期望泛化误差下界,刻画的是学习问题本身的难度。泛化性能是由学习算法的能力,数据的充分性,以及学习任务本身所共同决定的。下面这个是混淆矩阵:查准率也叫作准确...
  • 在选择自己需要的ADC时,噪声、ENOB有效分辨率都是关键的参数。
  • 前言   这篇笔记继续学习pytorch的数据预处理...本笔记的知识框架主要来源于深度之眼,并依此作了内容的丰富拓展,拓展内容主要源自torch文档的翻译理解,所用数据来源于网络。   数据预处理方法具体实现见:
  • 方差-偏差-噪声理解

    千次阅读 2018-07-26 21:10:03
    噪声(noise) 在估计学习算法性能的过程中, 我们主要关注偏差与方差. 因为噪声属于不可约减的误差 (irreducible error). 首先抛开机器学习的范畴, 从字面上来看待这两个词: 偏差 这里的偏指的是 偏离 , 那么它...
  • 零偏(Bias):可以理解为是输出减掉输入,一般指均值”:零偏的定义是传感器输出与标准输入之间的差值,零偏=实测陀螺数据-真值(≠均值),一般MEMS陀螺(高精度不可)使用短期静态下零输入时的输出均值近似表达...
  • 数据挖掘与数据分析

    万次阅读 多人点赞 2018-05-28 13:58:14
    一、数据挖掘和数据分析概述 数据挖掘和数据分析都是从数据中提取一些有价值的信息,二者有...2、在行业知识方面,数据分析要求所从事的行业有比较深的了解和理解,并且能够将数据与自身的业务紧密结合起来;而数...
  • 理解dropout

    万次阅读 多人点赞 2015-10-10 12:49:55
    Bayesian neural network稀疏数据特别有用,比如medical diagnosis, genetics, drug discovery and other computational biology applications 噪声派 参考文献中第二篇论文中得观点,也很强有力。 观点 观点十分...
  • JESD204B协议理解二:第5章数据

    千次阅读 多人点赞 2019-03-01 19:43:36
    JESD204B协议理解一:第4章电气规范 JESD204B协议理解三:第6章 确定性延时 目录 5 Data stream 5.1 Transport layer 5.1.1 Overview 5.1.2 User data format for an independent lane 5.1.3 User data ...
  • 点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达 本文转自|深度学习这件小事 孔子云:“性能不够,数据来凑”。可是如果数据中有噪声标签(Noisy ...
  • PCA的目的就是在数据特别多而且特征散乱的情况下,找到很少的几个差别很大的特征,丢弃其他差别较小的特征(也可以认为是噪声),这样可以将数据简化又不会丢失太多的特征差别。 在坐标系中表示, 就是找到一个...
  • 也许你也会跟我一样认为典型数据表中的某些规格难以理解,这是因为其中涵盖了一些你不太熟悉的隐含惯例。许多RF系统工程师而言,其中一种规格便是锁相环(PLL)中的相位噪声。当信号源被用作本机振荡器(LO)或...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,970
精华内容 26,788
关键字:

对数据噪声理解