日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《集体智慧编程》数学公式

發布時間:2024/9/30 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《集体智慧编程》数学公式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇博客的目的主要是為了記錄這些公式,取自原書附錄B。
1.歐幾里得距離(Euclidean Distance)
用途:計算距離,衡量相似度
公式:

代碼實現:

def euclidean(p, q):sumSq = 0.0#將差值的平方累加起來for i in range(len(p)):sumSq += (p[i] - q[i]) ** 2#求平方根return (sumSq ** 0.5)

2.皮爾遜相關系數(Pearson Correlation Coefficient)
用途:度量相關程度,也被用來衡量相似度
公式:

代碼實現:

def pearson(x, y):n = len(x)vals = range(n)#簡單求和sumx = sum([float(x[i]) for i in vals])sumy = sum([float(y[i]) for i in vals])#求平方和sumxSq = sum([x[i] ** 2.0 for i in vals])sumySq = sum([y[i] ** 2.0 for i in vals])#求乘積之和pSum = sum([x[i] * y[i] for i in vals])#計算皮爾遜評價值num = pSum - (sumx * sumy / n)den = ((sumxSq - pow(sumx, 2) / n) * (sumySq - pow(sumy, 2) / n)) ** 0.5if den == 0:return 1r = num / denreturn r

3.加權平均(Weighted Mean)
用途:求平均,以相似度為權重預測結果
公式:

代碼實現:

#加權平均 def weightedmean(x, w):num = sum([x[i] * w[i] for i in range(len(w))])den = sum([w[i] for i in range(len(w))])if den == 0:return 1return num / den

4.Tanimoto系數(Tanimoto Coefficient)
用途:度量兩個集合的相似程度,衡量相似度
公式:

代碼實現:

#Tanimoto系數 def tanimoto(a, b):c = [v for v in a if v in b]return float(len(c)) / (len(a) + len(b) - len(c))

5.條件概率(Conditional Probability)
用途:用于預測
公式:

代碼實現:

#條件概率 def condprobability(pab, pb):return pab / pb

6.基尼不純度(Gini Impurity)
用途:度量一個集合有多純
公式:

代碼實現:

#基尼不純度 def giniimpurity(l):total = len(l)counts = {}for item in l:counts.setdefault(item, 0)counts[item] += 1imp = 0for j in l:f1 = float(counts[j]) / totalfor k in l:if j == k:continuef2 = float(counts[j]) / totalimp += f1 * f2return imp

7.熵(Entropy)
用途:也是用來判斷集合的混亂程度
公式:

代碼實現:

#熵 def entropy(l):from math import loglog2 = lambda x : log(x) / log(2)total = len(l)counts = {}for item in l:counts.setdefault(item, 0)counts[item] += 1ent = 0for i in counts:p = float(counts[i]) / totalent -= p * log2(p)return ent

8.方差(Variance)
用途:度量預測或分類結果
公式:

代碼實現:

#方差 def variance(vals):mean = float(sum(vals)) / len(vals)s = sum([(v - mean) ** 2 for v in vals])return s / len(vals)

9.高斯函數(Gaussian Function)
用途:可用作權重函數
公式:

代碼實現:

#高斯函數 import math def gaussian(dist, sigma = 10.0):exp = meth.e ** (-dist ** 2 / (2 * sigma ** 2))return (1 / (sigma * (2 * math.pi) ** 0.5)) * exp

10.點積(Dot-Products)
用途:計算向量的夾角
公式:


代碼實現:

#點積 from math import acos#計算兩向量的點積 def dotproduct(a, b):return sum([a[i] * b[i] for i in range(len(a))])#計算一個向量的大小 def veclength(a):return sum([a[i] for i in range(len(a))]) * 0.5#計算兩個向量間的夾角 def angle(a, b):dp = dotproduct(a, b)la = veclength(a)lb = veclength(b)costheta = dp / (la * lb)return acos(costheta)

參考資料:
《集體智慧編程》附錄B

總結

以上是生活随笔為你收集整理的《集体智慧编程》数学公式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。