自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

常用MapReduce數(shù)據(jù)挖掘算法之均值、方差

數(shù)據(jù)庫 算法
本文講講一些機器學習算法的map-reduce并行策略,盡管有些算法確實不適合map-reduce計算,但是掌握一些并行思想策略總歸不是件壞事,大家如果對某個算法有更好的并行策略,也請多多指教,歡迎大家交流,OK,下面先從一個最基本的均值、方差的并行開始。

均值、方差的map-reduce

一堆數(shù)字的均值、方差公式,相信都很清楚,具體怎么設計map跟reduce函數(shù)呢,可以先從計算公式出發(fā),假設有n個數(shù)字,分別是a1,a2....an,那么 均值m=(a1+a2+...an) / n,方差 s= [(a1-m)^2+(a2-m)^2+....+(an-m)^2] / n

把方差公式展開來S=[(a1^2+.....an^2)+m^m*n-2*m*(a1+a2+....an) ] / n,根據(jù)這個我們可以把map端的輸入設定為(key,a1),輸出設定為(1,(n1,sum1,var1)),n1表示每個worker所計算的數(shù)字的個數(shù),sum1是這些數(shù)字的和(例如a1+a2+a3...),var1是這些數(shù)字的平方和(例如a1^2+a2^2+...)

       reduce端接收到這些信息后緊接著把所有輸入的n1,n2....相加得到n,把sum1,sum2...相加得到sum,那么均值m=sum/n,把var1,var2...相加得到var,那么***的方差S=(var+m^2*n-2*m*sum)/n,reduce輸出(1,(m,S))。

算法代碼是基于mrjob的實現(xiàn)(https://pythonhosted.org/mrjob/,機器學習實戰(zhàn)第十五章)

  1. from mrjob.job import MRJob 
  2. class MRmean(MRJob): 
  3.     def __init__(self, *args, **kwargs): 
  4.         super(MRmean, self).__init__(*args, **kwargs) 
  5.         self.inCount = 0 
  6.         self.inSum = 0 
  7.         self.inSqSum = 0 
  8.     def map(self, key, val): #needs exactly 2 arguments 
  9.         if False: yield 
  10.         inVal = float(val) 
  11.         self.inCount += 1 
  12.         self.inSum += inVal #每個元素之和 
  13.         self.inSqSum += inVal*inVal #求每個元素的平方 
  14.     def map_final(self): 
  15.         mn = self.inSum/self.inCount 
  16.         mnSq =self.inSqSum/self.inCount 
  17.         yield (1, [self.inCount, mn, mnSq]) #map的輸出,不過這里的mn=sum1/mn,mnsq=var1/mn 
  18.     def reduce(self, key, packedValues): 
  19.         cumVal=0.0; cumSumSq=0.0; cumN=0.0 
  20.         for valArr in packedValues: #get values from streamed inputs 解析map端的輸出 
  21.             nj = float(valArr[0]) 
  22.             cumN += nj 
  23.             cumVal += nj*float(valArr[1]) 
  24.             cumSumSq += nj*float(valArr[2]) 
  25.        mean = cumVal/cumN 
  26.         var = (cumSumSq - 2*mean*cumVal + cumN*mean*mean)/cumN 
  27.         yield (mean, var) #emit mean and var reduce的輸出 
  28.    def steps(self): 
  29.         return ([self.mr(mapper=self.map, mapper_final=self.map_final,\ 
  30.                           reducer=self.reduce,)]) 
  31. if __name__ == '__main__': 
  32.     MRmean.run() 
原文鏈接:http://www.cnblogs.com/kobedeshow/p/3600328.html
責任編輯:彭凡 來源: YYGamer
相關推薦

2014-05-13 09:56:24

數(shù)據(jù)挖掘

2020-06-03 15:35:10

數(shù)據(jù)挖掘算法大數(shù)據(jù)

2018-10-27 15:47:35

CART算法決策樹

2011-07-25 16:05:27

SQL SERVER數(shù)Web路徑流挖掘

2024-05-27 00:05:00

2011-08-11 16:16:26

SQL Server數(shù)據(jù)挖掘

2018-09-13 12:51:58

數(shù)據(jù)挖掘算法樸素貝葉斯

2017-05-26 08:53:27

數(shù)據(jù)挖掘算法

2012-08-09 09:57:54

K-means

2014-03-18 10:16:58

SVM

2018-04-25 08:10:50

算法k-means代碼

2014-11-11 15:46:54

MapReduce算法

2015-03-24 15:08:21

mapreducehadoop

2018-05-03 09:36:53

算法數(shù)據(jù)挖掘C4.5

2020-03-12 09:06:05

數(shù)據(jù)挖掘聚類分析學習

2016-01-29 11:00:55

數(shù)據(jù)挖掘算法大數(shù)據(jù)

2009-04-13 10:15:24

SQLServer 2005數(shù)據(jù)挖掘

2014-07-16 16:54:38

2015-08-18 09:42:25

2023-04-27 09:13:20

排序算法數(shù)據(jù)結構
點贊
收藏

51CTO技術棧公眾號