这篇博客的目的主要是为了记录这些公式,取自原书附录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

《集体智慧编程》数学公式相关推荐

  1. 《集体智慧编程》——第一章导读

    为什么80%的码农都做不了架构师?>>>    什么是集体智慧 其含义是指:为了长早新的想法,而将一群人的行为.偏好或思想组合在一起. 完成这项工作的一种最为基础的方法,便是使用调查 ...

  2. 《集体智慧编程》读书笔记2

    最近重读<集体智慧编程>,这本当年出版的介绍推荐系统的书,在当时看来很引领潮流,放眼现在已经成了各互联网公司必备的技术. 这次边阅读边尝试将书中的一些Python语言例子用C#来实现,利于 ...

  3. 《集体智慧编程》读书笔记10

    最近重读<集体智慧编程>,这本当年出版的介绍推荐系统的书,在当时看来很引领潮流,放眼现在已经成了各互联网公司必备的技术. 这次边阅读边尝试将书中的一些Python语言例子用C#来实现,利于 ...

  4. 《集体智慧编程》读书笔记4

    最近重读<集体智慧编程>,这本当年出版的介绍推荐系统的书,在当时看来很引领潮流,放眼现在已经成了各互联网公司必备的技术. 这次边阅读边尝试将书中的一些Python语言例子用C#来实现,利于 ...

  5. 《集体智慧编程》笔记(1 / 12):集体智慧导言

    文章目录 什么是集体智慧 什么是机器学习 机器学习的局限性 真实生活中的例子 学习型算法的其他用途 小结 Netflix, Google都适用了先进算法,将来自不同人群的数据加以组合,进而得出新的结论 ...

  6. 提供推荐--集体智慧编程

    背景:购物平台商品推荐算法介绍 数据:影评者对几部影片的打分情况,寻找人们在品味上的相似程度.通过相似度评价值进行推荐.评价值体系:欧几米德距离和皮尔逊相关度 critics = {'Lisa Ros ...

  7. 集体智慧编程学习笔记——第一讲

    1. 用户相似度评价 (1)欧几里德距离 (2)皮尔逊相关度评价 (3)jaccard 系数 (4)曼哈顿距离算法 转载于:https://www.cnblogs.com/gylhaut/p/9377 ...

  8. 集体智慧编程 - 构建价格模型

    主要介绍了kNN算法,和相关的权重分配,按比例缩放和绘制分布图等,框图如下, 转载于:https://www.cnblogs.com/zhouweihit/p/4117533.html

  9. 《集体智慧编程》第九章

    1.P210 函数scaledata()在运行时会报错: AttributeError: 'list' object has no attribute 'data' 这是由于函数scaledata() ...

最新文章

  1. linux双机脚本pkg如何生效,linux里命令pkg config工具的使用
  2. HDU 1285 确定比赛名次 拓扑排序(邻接矩阵 邻接表
  3. 程序员如何判断是否到了该辞职的时候?以及常用的辞职借口总结
  4. python flask框架发布问答平台注册页面_Python|Flask框架实现QQ账号登录
  5. java mapper.readtree_Java ObjectMapper.readTree方法代码示例
  6. 中切片工具怎么使用_PS软件中钢笔工具的使用,附视频
  7. java 线程交替输出,[java]java经典问题之线程交替打印数字
  8. 理论计算机科学研究生,清华大学理论计算机科学中心姚期智组招收保送研究生,请帮忙发到虎...
  9. [html] Standards模式和Quirks模式有什么区别?
  10. mysql查询选课最少成绩最高_MySQL 练习
  11. linux dd 重装系统,发现用dd装系统真是简单快捷通用
  12. Operating System-进程/线程内部通信-临界区(Critical Regions)
  13. Hibernate 多表关联
  14. 计算机检索基础知识,[转载]四 计算机文献检索基础知识(原理、结构和功能)...
  15. pytorch 训练face出现的问题
  16. jQuery Mobile中文本输入域input、textarea的data-*选项
  17. Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile 解决办法
  18. 数据库系统概论速成?
  19. 基于OpenVINO的端到端DL网络-初步接触OpenVINO提供的例子(win+vs)
  20. 2010年全国职称计算机考试专用教程——AutoCAD 2004制图软件 (含光盘下载)

热门文章

  1. MyBatis和hibernate本质区别与应用场景
  2. 整理Java相关的工具类Utils,持续更新中,建议收藏【目前更新至24】
  3. 手把手带你领略双十一背后的核心技术Sentinel之服务的熔断降级
  4. 云原生系列「五」我为啥又看上了serviceMesh?
  5. Linux中close的用法,linux下 open() write() read() close函数
  6. java indexof 忽略大小写_javascript的indexOf如何才能忽略大小写
  7. springboot进行图片上传并访问资源
  8. Android复习15【动画:创建资源文件夹、创建动画资源文件、组合动画、属性动画、材料设计新特性】
  9. UILabel上展示不同颜色的文字(NSAttributedString)
  10. 记一次院赛CTF的Pwn和Misc题(入门)