#16 数据上的各种距离(1)

讲到大数据就免不了提及一些演算法,但在我们开始介绍演算法之前,先介绍在数据中各种距离代表得含义

闵可夫基斯距离(Minkowski Distance)

严格上来讲闵可夫司机距离不算一种距离,而是一组距离的定义

两组?维变数https://chart.googleapis.com/chart?cht=tx&chl=A(x_%7B11%7D%2Cx_%7B12%7D...x_%7B1n%7D)https://chart.googleapis.com/chart?cht=tx&chl=B(x_%7B21%7D%2C%20x_%7B22%7D...x_%7B2n%7D)间的闵可夫司机距离定义为:

https://chart.googleapis.com/chart?cht=tx&chl=d%20%3D%20%5Csqrt%5B%5Ep%5D%7B%5Cdisplaystyle%5Csum_%7Bk%3D1%7D%5E%7Bn%7D(x_%7B1k%7D%20-%20x_%7B2k%7D)%5Ep%7D

其中p是一个变参数

  • 当p=1时,就是曼哈顿距离
  • 当p=2时,就是欧氏距离
  • 当p→♾时,就是谢比雪夫距离

根据变参数的不同,闵可夫基斯距离可以表示一种距离

欧氏距离(Euclidean Distance)

欧氏距离(L2范数),来自欧氏空间中的两点间的距离公式

  • 二维平面上的两点https://chart.googleapis.com/chart?cht=tx&chl=A(x_1%2Cy_1)https://chart.googleapis.com/chart?cht=tx&chl=B(x_2%2C%20y_2)间的欧氏距离:
    https://chart.googleapis.com/chart?cht=tx&chl=d_%7B12%7D%20%3D%20%5Csqrt%7B(x_1-x_2)%5E2%2B(y_1-y_2)%5E2%7D
  • 三维空间上的两点https://chart.googleapis.com/chart?cht=tx&chl=A(x_1%2Cy_1%2Cz_1)https://chart.googleapis.com/chart?cht=tx&chl=B(x_2%2Cy_2%2Cz_2)间的欧氏距离:
    https://chart.googleapis.com/chart?cht=tx&chl=d_%7B12%7D%20%3D%20%5Csqrt%7B(x_1-x_2)%5E2%20%2B%20(y_1-y_2)%5E2%20%2B%20(z_1-z_2)%5E2%7D
  • 两个?维向量https://chart.googleapis.com/chart?cht=tx&chl=A(x_%7B11%7D%2Cx_%7B12%7D...x_%7B1n%7D)https://chart.googleapis.com/chart?cht=tx&chl=B(x_%7B21%7D%2C%20x_%7B22%7D...x_%7B2n%7D)间的欧氏距离:
    https://chart.googleapis.com/chart?cht=tx&chl=d_%7B12%7D%20%3D%20%5Csqrt%7B%5Cdisplaystyle%5Csum_%7Bk%3D1%7D%5En(x_%7B1k%7D-x_%7B2k%7D)%5E2%7D

用python实现欧氏距离:

import numpy as np


def get_dist(a, b):
    """
    a:  A点
    b:  B点
    """
    return np.sqrt(sum(np.power((a - b), 2)))


if __name__ == '__main__':
    a = np.array([1, 2, 3])
    b = np.array([1, 2, 3])
    print(get_dist(a, b)) # 0
    a = np.array([1, 2, 3])
    b = np.array([3, 1, 5])
    print(get_dist(a, b)) # 3.0

<<:  删除Windows事件纪录--听起来简单做起来难的销声匿迹

>>:  Day 16 - 设定 PBR

Day22 测试写起乃 - Sidekiq Testing

sidekiq testing 是用来在测试环境时调整 sidekiq 模式 require 'si...

Swift 新手-AI/IOT CoreML and TensorFlow

Core ML 是一个 Apple 框架,它允许开发人员将机器学习/深度学习模型集成到他们的应用程序...

【从零开始的 C 语言笔记】第十九篇-While Loop(1)

不怎麽重要的前言 上一篇介绍了for loop的概念,让大家面对在有重复性、明确次数的处理时,可以使...

D1- 谁适合使用 Google Apps Script (GAS)呀?

Google Sheet 甚至可以帮你 Host 一个网站、能跟 slack 、 Biance 与...

【DAY 21】为什麽每天可以有这麽多问题?如果有机器人可以帮帮我就好了!— Microsoft Power Virtual Agents 智慧虚拟助理来罗~

哈罗大家好~ 每天的工作日常,从吃早餐了吗?这类的问候问题开始,还有来自老板的工作进度提问,到回答客...