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

这篇具有很好参考价值的文章主要介绍了释放马氏距离的力量:用 Python 探索多元数据分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、说明

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

维沙尔·夏尔马

释放马氏距离的力量:用 Python 探索多元数据分析,模式识别,人工智能,大数据

 

二、基本概念介绍

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

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

        马氏距离测量点和分布之间的距离,考虑数据中变量之间的相关性。它是点 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)

#OUTPUT

Distance 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()

释放马氏距离的力量:用 Python 探索多元数据分析,模式识别,人工智能,大数据

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

        下面是另一个使用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()

释放马氏距离的力量:用 Python 探索多元数据分析,模式识别,人工智能,大数据

        两个高度相关的特征(类黄酮和color_intensity)的散点图,每个数据点根据其马氏距离着色。文章来源地址https://www.toymoban.com/news/detail-645218.html

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

到了这里,关于释放马氏距离的力量:用 Python 探索多元数据分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 星辰秘典:探索Python项目的神秘力量——贪吃蛇

    ✨ 博主: 命运之光 🌸 专栏: 星辰秘典:探索Python项目的神秘力量 🐳 专栏: web开发(html css js) ❤️ 专栏: Java经典程序设计 ☀️ 博主的其他文章: 点击进入博主的主页 前言: 你好,欢迎来到我的博客。我是一个热爱编程的人,特别喜欢用Python这门语言来创造一些有

    2024年02月12日
    浏览(51)
  • 用 AI 编程-释放ChatGPT的力量

    最近读了本书,是 Sean A Williams 写的,感觉上还是相当不错的。一本薄薄的英文书,还真是写的相当好。如果你想看,还找不到,可以考虑私信我吧。 ChatGPT for Coders Unlock the Power of AI with ChatGPT: A Comprehensive Guide to Efficient and Effective Coding 下面这篇内容,基本上是我的读书笔记与

    2024年04月27日
    浏览(33)
  • 释放云计算的力量:Kubernetes 深度指南

    ✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Kubernetes详解 Kubernetes是一个开源的容器编排和管理工具,可以轻松管理大规模容器化应用程序。它可以自动化应用程序的部署、扩缩容、应用健康检查和故障

    2023年04月13日
    浏览(48)
  • 开源软件:释放创新的力量,改变数字世界的游戏规则

    在充满活力的技术领域,创新是至高无上的,有一种方法已获得显著的吸引力——开源软件。开源软件凭借其透明、协作和无限可能性的精神,彻底改变了我们开发、共享和定制应用程序的方式。从操作系统到数据分析工具,其影响跨越了多个领域。本文将带您深入了解开源

    2024年02月05日
    浏览(68)
  • 无限脉动:释放音乐和区块链在音乐领域的力量

    音乐是一种永恒的通用语言,它将人们聚集在一起,超越了边界,在我们灵魂深处产生共鸣,创造联系。在当今数字时代,随着区块链技术和去中心化网络的出现,音乐世界正在经历一场深刻的变革。 我们在与艺术家合作,帮助他们的品牌进入到 Web3 方面有着丰富的经验。我

    2024年02月12日
    浏览(43)
  • Elasticsearch:使用 ELSER 释放语义搜索的力量:Elastic Learned Sparse EncoderR

    在信息过载的时代,根据上下文含义和用户意图而不是精确的匹配来查找相关搜索结果已成为一项重大挑战。 传统的搜索引擎通常无法理解用户查询的语义上下文,从而导致相关性较低的结果。 在现代向量搜索之前,我们有 “传统”的 词袋(Bags of word - BOW)方法。

    2024年02月15日
    浏览(58)
  • BERT:来自 Transformers 的双向编码器表示 – 释放深度上下文化词嵌入的力量

    BERT是 Transformers 双向编码器表示 的缩写,是 2018 年推出的改变游戏规则的 NLP 模型之一。BERT 的情感分类、文本摘要和问答功能使其看起来像是一站式 NLP 模型。尽管更新和更大的语言模型已经出现,但 BERT 仍然具有相关性,并且值得学习它的架构、方法和功能。  这篇综合文

    2024年02月05日
    浏览(44)
  • 释放 OpenAI 和 ESP-BOX 的力量:ChatGPT 与乐鑫 SoC 融合指南

    当前,我们正见证着一场技术革命,而 OpenAI 正处于这场变革的最前沿。其中最激动人心的创新之一就是ChatGPT,它运用自然语言处理的力量,打造出更加引人入胜、直观的用户体验。而将 OpenAI 的 API 与物联网设备相结合,更是为我们打开了无限可能。    本文将探索 ChatGPT

    2024年02月09日
    浏览(90)
  • 【HDC.Cloud 2023】新鲜速递:从多元生态、开源到人才培养,让开发者成为决定性力量

    摘要: 华为云开发者联盟邀您一起回顾大会精彩时刻。 本文分享自华为云社区《【HDC.Cloud 2023】新鲜速递:从多元生态、开源到人才培养,让开发者成为决定性力量》,作者: 华为云社区精选 。 华为开发者大会2023(Cloud)7月7日在中国东莞正式揭开帷幕,邀请全球开发者共

    2024年02月13日
    浏览(101)
  • 数据分析之Logistic回归分析(二元逻辑回归、多元有序逻辑回归、多元无序逻辑回归)

    在研究X对于Y的影响时: 如果Y为定量数据,那么使用多元线性回归分析; 如果Y为定类数据,那么使用Logistic回归分析。 结合实际情况,可以将Logistic回归分析分为3类: 二元Logistic回归分析 多元有序Logistic回归分析 多元无序Logistic回归分析 Logistic回归分析用于研究X对Y的影响

    2024年03月13日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包