【機器學習演算法-python實現】矩陣去噪以及歸一化,python機器學習
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):歸一化矩陣
:https://github.com/jimenbian/AutoNorm-mat-
/********************************
* 本文來自部落格 “李博Garvin“
* 轉載請標明出處:http://blog.csdn.net/buptgshengod
******************************************/
開發機器學習演算法一般常用什麼語言?通常而言能夠深入研究機器學習演算法並按照自己項目需求進行定製開發人程式設計語言真次要問題
自己去google搜尋下面關鍵詞吧多機器學習演算法實現
machine learning in Java
machine learning in C++
machine learning in Python
machine learning in Matlab
machine learning in R
機器學習中常用的歸一化方法有哪些?單位化、除大值等我用兩多還有幾找找資訊檢索書看看;
還有歸化分行歸化和列歸化得根據資料本身性質來取文本行歸化般要好於列歸化實驗過