释放马氏距离的力量:用 Python 探索多元数据分析

一、说明

        马哈拉诺比斯距离(Mahalanobis Distance)是一种测量两个概率分布之间距离的方法。它是基于样本协方差矩阵的函数,用于评估两个向量之间的相似程度。Mahalanobis Distance考虑了数据集中各个特征之间的协方差,因此比欧氏距离更适合用于涉及多个特征的数据集。Mahalanobis Distance可以应用于各种机器学习算法中,如聚类分析、分类算法和异常检测。

维沙尔·夏尔马

 

二、基本概念介绍

        马氏距离是一种统计工具,用于测量点和分布之间的距离。它是一种强大的技术,可考虑数据集中变量之间的相关性,使其成为各种应用(如异常值检测、聚类和分类)中的宝贵工具。

        例如,让我们考虑一个场景,其中一家公司想要识别信用卡交易中的潜在欺诈行为。该公司收集有关各种变量的数据,例如交易金额,位置,时间和其他信用卡交易详细信息。然后,它使用马氏距离来测量每笔交易与所有交易分布之间的距离。通过这样做,它可以识别与其他交易明显不同的交易,并可能表明欺诈活动。

        马氏距离测量点和分布之间的距离,考虑数据中变量之间的相关性。它是点 x 与具有平均向量 μ 和协方差矩阵 Σ 的分布之间的距离。马氏距离的公式如下:

D² = (x-μ)TΣ⁻¹(x-μ)

        其中 D² 是平方马氏距离,x 是相关点,μ 是分布的平均向量,Σ 是分布的协方差矩阵,T 表示矩阵的转置。

        为了更好地理解这个公式,让我们举一个例子。假设我们有一个包含两个变量 X 和 Y 的数据集,并且我们想要测量一个点 (2, 3) 与数据集中所有点的分布之间的距离。我们计算数据集的平均向量和协方差矩阵如下:

    μ = [mean(X), mean(Y)] = [3, 4]

    Σ = [[var(X), cov(X,Y)], [cov(X,Y), var(Y)]] = [[2, -1], [-1, 2]]  

        现在,我们可以使用马氏距离公式来计算点 (2, 3) 和分布之间的距离:

D² = ([2, 3]-[3, 4])T[[2, -1], [-1, 2]]⁻¹([2, 3]-[3, 4])

= [-1, -1]T[[2, -1], [-1, 2]]⁻¹[-1, -1]

= [2, -2]T[[2/3, 1/3], [1/3, 2/3]][2, -2]

= [2/3, -2/3]T[2, -2]

= 4/3。

        因此,点 (2, 3) 与分布之间的马氏距离平方为 4/3。通过计算马氏距离,我们可以确定点与分布的距离,考虑 X 和 Y 变量之间的相关性。

import numpy as np
from scipy.spatial.distance import mahalanobis
from sklearn.datasets import make_blobs# Create a dataset with 2 clusters
X, y = make_blobs(n_samples=100, centers=2, random_state=42)# Calculate the mean vector and covariance matrix of the dataset
mu = np.mean(X, axis=0)
sigma = np.cov(X.T)# Calculate the Mahalanobis Distance between two points
x1 = [2, 2]
x2 = [-2, -2]
dist_x1 = mahalanobis(x1, mu, np.linalg.inv(sigma))
dist_x2 = mahalanobis(x2, mu, np.linalg.inv(sigma))# Print the distances
print("Distance between point x1 and the distribution:", dist_x1)
print("Distance between point x2 and the distribution:", dist_x2)#OUTPUTDistance between point x1 and the distribution: 2.099478227196236
Distance between point x2 and the distribution: 8.065203145117373

以下是如何使用马氏距离的一些示例:

  1. 异常值检测:马氏距离可以检测数据集中的异常值。异常值是与数据集其余部分明显不同的数据点。通过计算每个数据点与数据集平均值之间的马氏距离,我们可以识别远离平均值的数据点。这些数据点可被视为异常值,可能需要删除或进一步调查。
  2. 聚类:马氏距离也可用于聚类数据点。聚类是将相似的数据点分组在一起的过程。通过计算每个数据点之间的马氏距离和每个聚类的平均值,我们可以确定数据点属于哪个聚类。此方法可用于对具有不同方差或协方差的数据点进行聚类分析。
  3. 图像分类: 马氏距离可用于图像分类任务。此应用程序使用马氏距离来测量测试图像和一组训练图像之间的相似性。通过计算测试图像和每个训练图像之间的马氏距离,我们可以确定哪个训练图像与测试图像最相似。此方法对于人脸识别和对象检测等任务很有用。
  4. 欺诈检测:马氏距离可用于金融交易中的欺诈检测。通过计算一笔交易和一组历史交易之间的马氏距离,我们可以确定该交易是不寻常的还是可疑的。此方法可用于检测可能被忽视的欺诈易

以下是如何使用马氏距离的一些示例:

三、示例

下面是如何使用马哈拉诺比斯距离为现实生活中的数据集创建美丽图的示例:

        在本例中,让我们使用著名的鸢尾花数据集,其中包含 150 朵鸢尾花的测量值。我们将使用萼片长度、宽度和花瓣长度作为我们的特征。

首先,我们将计算数据集中每个数据点的马氏距离。我们可以在 Python 中使用以下代码来做到这一点:

import numpy as np
from scipy.spatial.distance import mahalanobis# load the iris dataset
from sklearn.datasets import load_iris
iris = load_iris()# calculate the mean and covariance matrix of the dataset
mean = np.mean(iris.data, axis=0)
cov = np.cov(iris.data.T)# calculate the Mahalanobis distance for each data point
mahalanobis_dist = [mahalanobis(x, mean, np.linalg.inv(cov)) for x in iris.data]

接下来,我们可以使用前两个特征(萼片长度和萼片宽度)创建虹膜数据集的散点图,并根据其马氏距离为每个数据点着色。我们可以使用颜色图将马氏距离映射到色标。这是该图的代码:

import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap# create a color map for the Mahalanobis distances
cmap = ListedColormap(['r', 'g', 'b'])
norm = plt.Normalize(min(mahalanobis_dist), max(mahalanobis_dist))# create a scatter plot of the iris dataset
plt.scatter(iris.data[:, 0], iris.data[:, 1], c=mahalanobis_dist, cmap=cmap, norm=norm)# add a color bar
plt.colorbar()
plt.xlabel('sepal length')
plt.ylabel('sepal width')
plt.title('Mahalanobis Distance for Iris Dataset')
plt.show()

        生成的图显示了鸢尾花数据集,每个数据点根据其马氏距离着色。远离平均值的数据点(即异常值)以红色显示,而接近平均值的数据点以绿色和蓝色着色。

        下面是另一个使用sci-kit-learn库附带的著名Wine数据集的示例:

import numpy as np
from scipy.spatial.distance import mahalanobis
import pandas as pd
from sklearn.datasets import load_wine
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap# load the wine dataset
wine = load_wine()
wine_df = pd.DataFrame(wine.data, columns=wine.feature_names)# calculate the mean and covariance matrix of the dataset
mean = np.mean(wine_df, axis=0)
cov = np.cov(wine_df.T)# calculate the Mahalanobis distance for each data point
mahalanobis_dist = [mahalanobis(x, mean, np.linalg.inv(cov)) for x in wine_df.values]# create a scatter plot of the wine dataset using two highly correlated features
plt.scatter(wine_df['flavanoids'], wine_df['color_intensity'], c=mahalanobis_dist, cmap='coolwarm')# add a color bar
plt.colorbar()
plt.xlabel('flavanoids')
plt.ylabel('color_intensity')
plt.title('Mahalanobis Distance for Wine Dataset')
plt.show()

        两个高度相关的特征(类黄酮和color_intensity)的散点图,每个数据点根据其马氏距离着色。

“Unlocking the Power of Mahalanobis Distance: Exploring Multivariate Data Analysis with Python” | by Vishal Sharma | Medium
机器学习
数据科学
统计学
数据可视化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1379937.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

案例14 Spring MVC文件上传案例

基于Spring MVC实现文件上传&#xff1a; 使用commons-fileupload实现上传文件到本地目录。 实现上传文件到阿里云OSS和从阿里云OSS下载文件到本地。 1. 创建项目 选择Maven快速构建web项目&#xff0c;项目名称为case14-springmvc03。 ​ 2. 配置Maven依赖 <?xml ver…

若依如何使用(基本环境的配置)

本文章转载于公众号&#xff1a;王清江唷,仅用于学习和讨论&#xff0c;如有侵权请联系 QQ交流群&#xff1a;298405437 本人QQ&#xff1a;4206359 具体视频地址:8 跑后端_哔哩哔哩_bilibili 1、Ruoyi-Vue是什么&#xff1f; 借用官网原话来解释&#xff1a; 一直想做一款…

08-1_Qt 5.9 C++开发指南_QPainter绘图

文章目录 前言1. QPainter 绘图系统1.1 QPainter 与QPaintDevice1.2 paintEvent事件和绘图区1.3 QPainter 绘图的主要属性 2. QPen的主要功能3. QBrush的主要功能4. 渐变填充5. QPainter 绘制基本图形元件5.1 基本图像元件5.2 QpainterPath的使用 前言 本章所介绍内容基本在《…

小型健身俱乐部管理系统的设计与实现_kaic

随着生活水平不断提高&#xff0c;人们的健身意识也不断加强&#xff0c;健身俱乐部作为专业的健身服务行业&#xff0c;已经越来越受到人们的亲睐。随着自身的规模不断扩大&#xff0c;客户数量的增多&#xff0c;传统的管理模式已不能适应现代健身机构的发展趋势&#xff0c;…

毕业设计——基于SSM的健身房管理系统

该系统已经上传CSDN官方资源,下载地址: https://download.csdn.net/download/qq_16397653/14027661 1.包含源程序&#xff0c;数据库脚本。代码和数据库脚本都有详细注释。 2.课题设计仅供参考学习使用&#xff0c;可以在此基础上进行扩展完善 开发环境&#xff1a; Eclipse ,M…

健身房会员管理系统(Java+Web+MySQL)

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1 课题背景 1 1.2 课题研究的目的和意义 2 1.3 课题发展前景及趋势 3 1.4 课题内容简介 4 1.5 开发工具 4 1.5.1 MyEclipse 5 1.5.2 Tomcat 5 1.5.3 MySQL 5 1.5.4 JSP 6 1.5.5 JavaScript 6 1.6 软硬件需求 7 第二章 需求分析 8 2.…

如何选择好的健身房管理系统而且还不收费

如何选择好的健身管理系统而且还不收费 “迄今为止&#xff0c;中国健身行业没有好用的健身管理系统CRM商户端。身为健身从业者&#xff0c;需求没有被满足&#xff0c;我很遗憾。三年过去了&#xff0c;我仍然是健身从业者&#xff0c;这个问题依然没有解决&#xff0c;我决定…

计算机毕业设计——健身房管理系统

Java毕业设计工作中所做的代码研发以及论文编写&#xff0c;是对于我们大学四年的知识做一个总结&#xff0c;同时也是对我们的文字编写能力的一个检验。在大学生涯结束之际&#xff0c;应当对自己有两点觉悟&#xff1a; 1、既然学了软件工程这门专业&#xff0c;在今后不管会…

基于Django的健身房管理系统

目 录 摘 要 I Abstract II 1 引言 1 1.1选题背景及意义 1 1.2发展现状 1 1.3研究主要内容 2 2 关键技术介绍 4 2.1相关技术简介 4 2.1.1 B/S体系相关介绍 4 2.1.2 Python语言介绍 4 2.1.3 Djang框架介绍 5 2.2技术方案选择 6 2.3开发环境的确定 7 3 系统分析 8 3.1可行性分析 …

健身房管理系统毕业设计c语言,健身房会员管理系统设计与实现

健身房会员管理系统设计与实现 摘要&#xff1a;随着信息管理技术在当前各个管理领域上的普遍使用&#xff0c;信息系统管理的技术越来越趋于成熟&#xff0c;目前大部分健身房管理会员信息还是使用手动记录的方式&#xff0c;不但信息冗杂、录入困难&#xff0c;还不方便查阅&…

基于android的健身管理APP(ssm+uinapp+Mysql)

基于android的健身管理APP(ssmuinappMysql) 管理员&#xff1a;管理员使用本系统涉到的功能主要有首页、个人中心、用户管理、健身课程管理、课程类型管理、健身圈子管理、系统管理等功能用户&#xff1a;用户进入app可以实现首页、健身资讯、健身课程、健身圈子、我的等,在我的…

安全第二次

一&#xff0c;iframe <iframe>标签用于在网页里面嵌入其他网页。 1&#xff0c;sandbox属性 如果嵌入的网页是其他网站的页面&#xff0c;因不了解对方会执行什么操作&#xff0c;因此就存在安全风险。为了限制<iframe>的风险&#xff0c;HTML 提供了sandb…

Linux:Shell编辑之文本处理器(sed)

目录 绪论 1、sed的原理&#xff1a;读取 执行 显示 三个过程 2、sed 文本内容处理工具&#xff0c;文件过大怎么办&#xff1f; 3、sed的操作选项 3.1 常用选项 3.2 操作符 3.3 行号的范围打印 3.4 对包含指定字符串的内容进行打印 3.5 删 3.5.1 正则表达式删除 3.6…

【计算机视觉|生成对抗】条件生成对抗网络(CGAN)

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Conditional Generative Adversarial Nets 链接&#xff1a;[1411.1784] Conditional Generative Adversarial Nets (arxiv.org) 摘要 生成对抗网络&#xff08;Generative Adversarial…

打靶练习:WestWild 1.1(一个简单但不失优雅的Ubuntu靶机)

主机发现和nmap信息收集 //主机发现 sudo nmap -sn 192.168.226.0/24 //扫描整个C段//端口扫描//初步扫描 sudo nmap -sT --min-rate 10000 -p- 192.168.226.131 -oA nmapscan/ports //用TCP的三次握手&#xff0c;以速率10000扫描1-65535端口&#xff0c;扫描结果以全格式…

VM虚拟机搭建详细步骤

一、安装好VMware&#xff0c;双击exe程序&#xff0c;启动软件 二、新建虚拟机 三、选择“典型”&#xff0c;点击“下一步” 四、先择“稍后安装操作系统”&#xff0c;点击“下一步” 五、选择操作系统&#xff0c;以windows server 2008 为例&#xff0c;上方选择“Microso…

在Centos环境中搭建Nginx环境

一、Nginx概念简介 Nginx是一个轻量级的高性能HTTP反向代理服务器&#xff0c;同时它也是一个通用类型的代理服务器&#xff0c;支持绝大部分协议&#xff0c;如TCP、UDP、SMTP、HTTPS等。 Nginx与redis相同&#xff0c;都是基于多路复用模型构建出的产物&#xff0c;因此它与R…

机器学习实战3-随机森林算法

文章目录 集成算法概述sklearn中的集成算法模块 RandomForestClassifier重要参数&&随机森林的分类器控制基评估器的参数n_estimatorssklearn建模流程复习交叉验证我们进行10次交叉验证&#xff0c;观察随机森林和决策树的效果n_estimators学习曲线 bootstrap & oob…

华为鸿蒙全屋定制,高速Wi-Fi信号难以配置?华为全屋定制一站解决

目前&#xff0c;采用5GHz频段的Wi-Fi路由器逐渐在大众家庭中普及开来&#xff0c;5G Wi-Fi已然成为高速网络的代名词之一。但是由于高频信号的物理特性&#xff0c;5GHz信号比原来的2.4GHz信号波长更短&#xff0c;信号衰减更快&#xff0c;很多使用单个路由器户型复杂的房屋会…

华为HiLink、海尔智家、智汀各自的核心优势?

“智能家居”这个概念出现的很早&#xff0c;但由于缺乏智能相关技术支撑&#xff0c;使得很多家电产品之间缺乏联动&#xff0c;在兼容方面缺乏数据共享&#xff0c;无法真正带给用户"智能互联"的体验等等。 在手机应用市场之中搜索“智能家居”&#xff0c;相关APP…