博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【机器学习算法-python实现】矩阵去噪以及归一化
阅读量:7029 次
发布时间:2019-06-28

本文共 2253 字,大约阅读时间需要 7 分钟。

1.背景

   项目须要,打算用python实现矩阵的去噪和归一化。用numpy这些数学库没有找到非常理想的函数。所以一怒之下自己用标准库写了一个去噪和归一化的算法,效率有点低,只是还能用,大家假设有须要能够拿去。
 (1)去噪算法:依据概率论的知识,假设一组数据服从正态分布,我们设均值是n,方差是v,那么对于每一个离散数值有百分之九十二以上的概率会在(n-3*v,n+3*v)的区间内。

所以这里的去噪功能主要是实现假设超出了区间就将这个值标记为区间所能容忍最大值。

 (2)归一化:找到输入队列最大值max。最小值min。对随意一个自变量x。它的归一化数值为(x-min/max-min)。

2.实现代码

from __future__ import divisiondef GetAverage(mat):        n=len(mat)    m= width(mat)     num = [0]*m    for j in range(0,m):            for i in mat:              num[j]=num[j]+i[j]                      num[j]=num[j]/n       return numdef width(lst):    i=0    for j in lst[0]:       i=i+1    return idef 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]=num[j]+(i[j]*i[j])               num[j]=num[j]/n       return num def DenoisMat(mat):    average=GetAverage(mat)    variance=GetVar(average,mat)    section=list(map(lambda x: x[0]+x[1], zip(average, variance)))            n=len(mat)    m= width(mat)     num = [0]*m    denoisMat=[]        for i in mat:        for j in range(0,m):               if i[j]>section[j]:                     i[j]=section[j]        denoisMat.append(i)      return denoisMat                                        def AutoNorm(mat):       n=len(mat)    m= width(mat)         MinNum=[9999999999]*m    MaxNum = [0]*m        for i in mat:        for j in range(0,m):            if i[j]>MaxNum[j]:                MaxNum[j]=i[j]          for p in mat:             for q in range(0,m):            if p[q]<=MinNum[q]:                    MinNum[q]=p[q]                                section=list(map(lambda x: x[0]-x[1], zip(MaxNum, MinNum)))    print section    NormMat=[]         for k in mat:                            distance=list(map(lambda x: x[0]-x[1], zip(k, MinNum)))          value=list(map(lambda x: x[0]/x[1], zip(distance,section)))          NormMat.append(value)               return NormMat
库的实现:输入矩阵mat,

GetAverage(mat):返回均值

GetVar(average,mat):返回方差

DenoisMat(mat):去噪

AutoNorm(mat):归一化矩阵

/********************************

* 本文来自博客  “李博Garvin“

* 转载请标明出处:

******************************************/

你可能感兴趣的文章