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. explain的使用

    MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化. mysql. row ************ ...

  2. 前端Datatables自定义事件(监听Datatables插件一些常见的事件动作)

    今天开发项目的时候,用Datatables插件做前端分页列表,想在列表发生翻页.排序.搜索.改变单页显示数据条数这些行为的时候做一些其他的操作,看了半天Datatables官网终于找到可以监测到这些事 ...

  3. vue1.0

    vue1.0学习总结   前言 使用vue已经有三.四个月了,但是只是学着使用了一些基本方法.因为现在的前端框架越来越多(Angular,React...),但是我相信万变不离其宗,很多用法框架之间还 ...

  4. 033 Java Spark的编程

    1.Java SparkCore编程 入口是:JavaSparkContext 基本的RDD是:JavaRDD 其他常用RDD: JavaPairRDD JavaRDD和JavaPairRDD转换: ...

  5. P1102 A-B数对

    P1102 A-B数对用map过掉,可以当高效的桶排用,map<long long,int>m;意思是m[long long]==int; #include<iostream> ...

  6. jQuery-Selectors(选择器)的使用(二、层次篇)(转载)

    原文:http://www.cnblogs.com/bynet/archive/2009/12/01/1614405.html 本系列文章导航 jQuery-Selectors(选择器)的使用(一.基 ...

  7. FreeMarker快速入门

    虽然当前比较推荐使用thymeleaf替代jsp作为java网页开发的模板语言,不过公司推荐使用freemarker,那就顺势而为,速度学一发,然后迅速开始新项目了. 简介 FreeMarker第一个 ...

  8. 使用Plant Simulation连接SQL Server

    1. 在管理类库中添加ODBC. 2. 在控制面板->管理工具中设置ODBC,添加SQL Server服务. 3. 在plant simulation中将信息流中的ODBC添加到Frame中. ...

  9. codevs 3022 西天收费站

    题目描述 Description 唐僧师徒四人终于发现西天就在眼前,但猴子突然发现前面有n个收费站(如来佛太可恶),在每个收费站用不同的方式要交的钱不同,输入每个收费站的每种方法收的钱,输出最少花的钱 ...

  10. BSGS算法学习

    嗯哼大步小步法. 一个非常暴力的想法. 注意到如果设C = ⌈√P⌉,那么任何一个数都可以写 成a1 * C + b1的形式,其中a1, b1 都< C. 那么预处理出A^i*C的值.然后在询问 ...