1.背景

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

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

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

2.实现代码

from __future__ import division
def 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 num def width(lst):
i=0
for j in lst[0]:
i=i+1
return i 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]=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“

* 转载请标明出处:http://blog.csdn.net/buptgshengod

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

【机器学习算法-python实现】矩阵去噪以及归一化的更多相关文章

  1. 【机器学习算法-python实现】KNN-k近邻算法的实现(附源代码)

    ,400],[200,5],[100,77],[40,300]]) shape:显示(行,列)例:shape(group)=(4,2) zeros:列出一个同样格式的空矩阵,例:zeros(group ...

  2. 机器学习算法 Python&R 速查表

    sklearn实战-乳腺癌细胞数据挖掘( 博主亲自录制) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  3. 【机器学习算法-python实现】决策树-Decision tree(1) 信息熵划分数据集

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 决策书算法是一种逼近离散数值的分类算法,思路比較简单,并且准确率较高.国际权威的学术组织,数据挖掘国际 ...

  4. 【机器学习算法-python实现】Adaboost的实现(1)-单层决策树(decision stump)

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景      上一节学习支持向量机,感觉公式都太难理解了,弄得我有点头大.只是这一章的Adaboost线比 ...

  5. 【机器学习算法-python实现】採样算法的简单实现

    1.背景     採样算法是机器学习中比較经常使用,也比較easy实现的(出去分层採样).经常使用的採样算法有下面几种(来自百度知道):     一.单纯随机抽样(simple random samp ...

  6. 【机器学习算法-python实现】PCA 主成分分析、降维

    1.背景         PCA(Principal Component Analysis),PAC的作用主要是减少数据集的维度,然后挑选出基本的特征.         PCA的主要思想是移动坐标轴, ...

  7. 【机器学习算法-python实现】协同过滤(cf)的三种方法实现

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景       协同过滤(collaborative filtering)是推荐系统经常使用的一种方法.c ...

  8. 市场清仓价格算法 python求矩阵不同行不同列元素和的最大值

    问题描述 求矩阵不同行不同列元素和的最大值(最小值) 问题求解 1.通过scipy库求解 scipy.optimize库中的linear_sum_assignment方法可以求解 输入一个矩阵,参数m ...

  9. 【机器学习算法-python实现】svm支持向量机(1)—理论知识介绍

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景      强烈推荐阅读(http://www.cnblogs.com/jerrylead/archiv ...

随机推荐

  1. SqlServer中 SET DATEFIRST更改

    在 SQL Server 中默认情况下,每周的开始都是从周日开始算起的,如果默认星期一呢? 这里有三种方式可以解决这个问题: 一:直接通过 SET DATEFIRST VALUE 来更改重新生成新的 ...

  2. 一步一步学习IdentityServer3 (3)

    在上一篇中配置一个基础的idrserver服务端 这篇文章将对服务端做一些变化,这里我先贴一下上一章中的代码 证书: static class Certificate { public static ...

  3. 使用div模拟出frameset效果

    <!doctype html> <html xmlns="http://www.w3.org/1999/xhtml" > <head> < ...

  4. 2019 CCPC wannfly winter camp Day 8

    E - Souls-like Game 直接线段树合并矩阵会被卡T掉,因为修改的复杂度比询问的复杂度多一个log,所以我们考虑优化修改. 修改的瓶颈在于打lazy的时候, 所以我们预处理出每个修改矩阵 ...

  5. Successor hdu 4366 线段树

    题意: 现在n个人,其中编号0的是老板,之后n-1个员工,每个员工只有一个上司,有一个忠诚值和能力值.每次要解雇一个人的时候,从他的下属中选取能力值大于他的且忠诚值最高的一个,若不存在则输出-1.共m ...

  6. Going Home

    题意:n个人,进n个房子,每走一格花费1美元,每个房子只能进一人,求所有人进房子的最小花费.   就是推箱子 箱子最短行走距离 这题无法用bfs做 ! 用最小花费最大流 通过EK,Dinic,ISAP ...

  7. BeautifulSoup使用总结

    一.介绍 BeautifulSoup为一个python库,它可以接收一个HTML或XML的字符串或文件,并返回一个BeautifulSoup对象,之后我们可以使用BeautifulSoup提供的众多方 ...

  8. ld: -pie can only be used when targeting iOS 4.2 or later

    ld: -pie can only be used when targeting iOS 4.2 or later clang: error: linker command failed with e ...

  9. Git 版本控制管理(二)

    Git 分支管理 1. 概念 我们来抽象的理解,分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN.如果两个平行宇宙互不干扰,那对现在的你也 ...

  10. 基于ETL技术的数字化校园共享数据中心设计

    摘要:数据的抽取.转换与加载(ETL)是数据整合的核心过程.在分析高校信息化建设现状基础上,以建立数字化校园.整合数据资源.实现数据共享为目标,提出以ETL为基础建立共享数据中心实现数据整合的方案.介 ...