数据分析:5个数据相关性指标

1. 介绍

相似性度量是许多数据分析和机器学习任务中的重要工具,使我们能够比较和评估不同数据片段之间的相似性。有许多不同的指标可用,每个指标各有利弊,适用于不同的数据类型和任务。

本文将探讨一些最常见的相似性指标并比较它们的优缺点。通过了解这些指标的特点和局限性,我们可以选择最适合我们特定需求的指标,并确保结果的准确性和相关性。

2. 指标

2.1. 欧几里得距离

该指标计算 n 维空间中两点之间的直线距离。它常用于连续的数值数据,易于理解和实现。但是,它可能对异常值很敏感,并且没有考虑不同特征的相对重要性。

from scipy.spatial import distance

# Calculate Euclidean distance between two points
point1 = [1, 2, 3]
point2 = [4, 5, 6]

# Use the euclidean function from scipy's distance module to calculate the Euclidean distance
euclidean_distance = distance.euclidean(point1, point2)

2.2. 曼哈顿距离

该指标通过考虑两点坐标在每个维度中的绝对差异并将它们相加来计算两点之间的距离。它对离群点的敏感性不如欧氏距离,但在某些情况下可能无法准确反映点与点之间的实际距离。

from scipy.spatial import distance

# Calculate Manhattan distance between two points
point1 = [1, 2, 3]
point2 = [4, 5, 6]

# Use the cityblock function from scipy's distance module to calculate the Manhattan distance
manhattan_distance = distance.cityblock(point1, point2)

# Print the result
print("Manhattan Distance between the given two points: " + \
      str(manhattan_distance))

2.3. 余弦相似度

该指标通过考虑角度来计算两个向量之间的相似度。它通常用于文本数据并且可以抵抗向量大小的变化。但是,它没有考虑不同特征的相对重要性。

from sklearn.metrics.pairwise import cosine_similarity

# Calculate cosine similarity between two vectors
vector1 = [1, 2, 3]
vector2 = [4, 5, 6]

# Use the cosine_similarity function from scikit-learn to calculate the similarity
cosine_sim = cosine_similarity([vector1], [vector2])[0][0]

# Print the result
print("Cosine Similarity between the given two vectors: " + \
      str(cosine_sim))Jaccard Similarity

2.4. Jaccard相似度

该指标通过考虑两个集合的交集和并集的大小来计算两个集合之间的相似性。它通常用于分类数据并且可以抵抗集合大小的变化。但是,它不考虑集合的顺序或元素的频率。

def jaccard_similarity(list1, list2):
    """
    Calculates the Jaccard similarity between two lists.
    
    Parameters:
    list1 (list): The first list to compare.
    list2 (list): The second list to compare.
    
    Returns:
    float: The Jaccard similarity between the two lists.
    """
    # Convert the lists to sets for easier comparison
    s1 = set(list1)
    s2 = set(list2)
    
    # Calculate the Jaccard similarity by taking the length of the intersection of the sets
    # and dividing it by the length of the union of the sets
    return float(len(s1.intersection(s2)) / len(s1.union(s2)))

# Calculate Jaccard similarity between two sets
set1 = [1, 2, 3]
set2 = [2, 3, 4]
jaccard_sim = jaccard_similarity(set1, set2)

# Print the result
print("Jaccard Similarity between the given two sets: " + \
      str(jaccard_sim))

2.5. 皮尔逊相关系数

该指标计算两个变量之间的线性相关性。它通常用于连续的数值数据,并考虑不同特征的相对重要性。但是,它可能无法准确反映非线性关系。

import numpy as np

# Calculate Pearson correlation coefficient between two variables
x = [1, 2, 3, 4]
y = [2, 3, 4, 5]

# Numpy corrcoef function to calculate the Pearson correlation coefficient and p-value
pearson_corr = np.corrcoef(x, y)[0][1]

# Print the result
print("Pearson Correlation between the given two variables: " + \
      str(pearson_corr))
本文转载于网络 如有侵权请联系删除

相关文章

  • 该来的还是来了,盘点 ES12 中有新特性!

    今天主要介绍一下ECMAScript2021(ES12)的一部分的JS功能。 逻辑赋值操作符数字分隔符(1_000)Promise.any与AggregateErrorString.prototype.replaceAllWeakRefs与FinalizationRegistry对象逻辑赋值操作符逻辑赋值操作符将逻辑操作(&&、||或??)与赋值表达式组合在一起。x||=y; x||(x=y); x&&=y; x&&(x=y); x??=y; x??(x=y); 复制带有&&的逻辑赋值操作符letx=1; lety=2; x&&=y; console.log(x);//2 复制x&&=y等价于x&&(x=y)。或者等价于if(x){ x=y } 复制因为x是一个真值,所以它被赋值为y,即2。带有||的逻辑赋值操作符letx=1; lety=2; x||=y; console.log(x);//1 复制x||=y等价于x||(x=y)。这意味着赋值操作只在x为虚值时才会发

  • 【DB笔试面试728】在Oracle中,如何修改RAC中的主机名?

    ♣题目部分在Oracle中,如何修改RAC中的主机名?♣答案部分 RAC中的主机名主要有公网对应的主机名、VIP对应的主机名、SCAN对应的主机名和私有主机名。(一)公网主机名集群公网对应的主机名是在安装时输入的,并且被记录在OCR中。这个主机名在安装之后是不能修改的。唯一的修改方法是删除节点,修改主机名,之后将节点重新添加到集群,或者直接重新安装集群软件,并完成后续的克隆配置。(二)VIP主机名集群的VIP对应的主机名是可以被修改的,修改步骤如下所示:首先停止数据库和相关的VIP资源:srvctlstopdb-dlhrac srvctlstopvip-nraclhr-11gR2-N1-f srvctlstopvip-nraclhr-11gR2-N2-f 复制修改OCR中记录的VIP名称:crsctlmodifyresora.raclhr-11gr2-n1.vip-attrUSR_ORA_VIP=rac1vip crsctlmodifyresora.raclhr-11gr2-n2.vip-attrUSR_ORA_VIP=rac2vip 复制查询:crsctlstatresora.rac

  • CreatorPrimer(17)|物理小游戏(物理组件)

    Demo演示视频:本视频的工程已经上传github,CreatroPrimer仓库physics分支,传送地址:https://github.com/ShawnZhang2015/CreatorPrimer/tree/physics紧接上篇的物理投篮游戏,这次我们介绍CocoscCreator的物理引擎相关组件:刚体与物理碰撞检测。1.刚体组件我们先看看游戏中的笑脸小球的刚体组件属性,请看下图:Ball动态刚体RigidBody就是CocosCreator提供的刚体组件,将组件挂载到一个节点上,节点即具有物理特性,运行起来会随着地心引力向下坠落(需要开启物理效果)。有些刚体是不需要动的,比如我们四周的围墙,只需要将刚体组件的Type属性设置为static即可,请看下图:静态刚体设置好静态刚体,运行游戏会发现小球下坠,但会穿过围墙,掉入无尽深渊去了。2.物理碰撞组件刚体组件只是给节点赋予了重力、速度、阻力等能力,接下来我们还需要为节点设置物理外形,这需要为节点挂载一个碰撞组件,看下图:为Ball添加圆形碰撞组件CocosCreator提供了四种物理碰撞组件分别是:矩形碰撞链条碰撞圆形碰撞

  • 1.24 VR扫描:HTC宣布高端VR一体机VIVE FOCUS全国发货

    HTC宣布高端VR一体机VIVEFOCUS全国发货 今日,HTC在深圳举办的“2018一触即发——HTCVIVE新春品鉴会”上,宣布高端VR一体机VIVEFOCUS预售订单开始全国发货。此外,HTC新发布的VivePro专业版也首次在国内亮相。据悉,目前已确认有40余款6DoF内容将随VIVEFOCUS发货,登陆其预装的VIVEPORTM应用商店。类型涵盖游戏、视频、工具、教育及行业应用等,其中近六成为免费内容。VRPinea独家点评:40多款6DoF内容?像是拥有了全世界。索尼获新PSVR控制器专利据悉,索尼刚刚获得一项新专利,其新的控制器可能正在研发之中。该专利由索尼互动娱乐在日本提交,并于本月早些时候发布。该专利是一个新的控制器,看起来可能是Moves的完美替代品。此外,在同一天发布的另一个专利中还提到能够追踪用户手指位置的技术,这表明我们可能会在新控制器中看到某种形式的手部跟踪。VRPinea独家点评:外形好评,还增加Move缺少的手指位置追踪技术。谷歌推3D模型查看工具Article,直接与AR内容互动昨日,谷歌发布了3D模型查看器Article,其将兼容所有的浏览器。使用户

  • iOS开发之集成高德地图(一)

    在iOS开发中,经常会使用到定位和地图,Apple自带的定位和地图应付一般的场景绰绰有余,但是也缺少一些功能,如POI搜索、不够接地气等。因此作者选择了高德地图,这篇文正主要介绍定位功能的集成。环境:Xcode7.3.1+iOS9.3+能访问网络1、注册开发者,创建应用首先注册成为开发者,成为开发者以后,登录并进入控制台,然后创建一个iOS应用,注意这一定要填写好你的Bundleidentifier,不知道的后文有说明怎么查询。进入控制台 获取Key.gif 填写key的信息 填写key的信息.png 生成一个key 申请Key.JPG 2、通过CocoaPods导入需要的SDKplatform:ios,'9.0'#手机系统版本 target'集成高德地图'do#新建的Xcode工程名 pod'AMapLocation'#定位SDK end复制3、配置Info.plist,添加前后台定位的授权信息,到时候会弹出一个对话框让用户选择是否同意(iOS8以后必须要添加),可以先只设置NSLocation

  • 这或许是对小白最友好的python入门了吧——4,列表

    有些时候我们要用python处理一系列元素,这个时候我们可以把这一系列元素放到列表中。比如我们考试科目。请不要在此处直接复制代码! 在python中,列表用“[]”来表示,各元素用逗号隔开。比如我们新建一个考试科目的列表可以在编辑器中输入exam=["cet","math","english","python"]复制我们可以将列表print出来:print(exam)复制这样打印出来的是整个列表,如图:好了,现在cet已经考完了,我只想打印math怎么办呢?很简单,只需要:print(exam[1])复制这时候疑问来了,math明明是第二个元素怎么你在上行代码中写的[1]呢,原来python计数的第一个元素是0而非1,所以我们要打印第n个元素就要输入n-1了,是不是很简单呢?如果想打印第二三个只需要加一行代码就可以了。print(exam[1]) print(exam[2])复制除了从前往后数我们也可以从后往前数,怎么打印最后一门考试科目呢?print(exam[-1])复制同理倒数第二就是-2了。这时候你

  • 一文看懂自动驾驶中应用的机器学习算法

    机器学习算法已经被广泛应用于自动驾驶各种解决方案,电控单元中的传感器数据处理大大提高了机器学习的利用率,也有一些潜在的应用,比如利用不同外部和内部的传感器的数据融合(如激光雷达、雷达、摄像头或物联网),评估驾驶员状况或为驾驶场景分类等。在KDnuggets网站最近发表的一篇文章中,作者SavaramRavindra将自动驾驶中机器学习算法主要分为四类,即决策矩阵算法、聚类算法、模式识别算法和回归算法。我们跟他一起看看,这些算法都是怎样应用的。算法概览我们先设想这样一个自动驾驶场景——汽车的信息娱乐系统接收传感器数据融合系统的信息,如果系统发现司机身体有恙,会指导无人车开往附近的医院。这项应用以机器学习为基础,能识别司机的语音、行为,进行语言翻译等。所有这些算法可以分为两类:监督学习和无监督学习,二者的区别在它们学习的方法。监督学习算法利用训练数据集学习,并会坚持学到达到所要求的置信度(误差的最小概率)。监督学习算法可分为回归、分类和异常检测或维度缩减问题。无监督学习算法会在可用数据中获取价值。这意味着算法能找到数据的内部联系、找到模式,或者根据数据间的相似程度将数据集划分出子集。无监督

  • 教你用300万共享单车出行数据,预测骑行目的地 !(附源码)

    来源:大数据挖掘DT数据分析本文长度为1647字,建议阅读3分钟本文为你介绍使用出行记录数据和源码预测摩拜出行目的地的方法。摩拜单车在北京的单车投放量已经超过40万。用户可以直接在人行道上找到停放的单车,用手机解锁,然后骑到目的地后再把单车停好并锁上。因此,为了更好地调配和管理这40万辆单车,需要准确地预测每个用户的骑行目的地。标注数据中包含300万条出行记录数据,覆盖超过30万用户和40万摩拜单车。数据包括骑行起始时间和地点、车辆ID、车辆类型和用户ID等信息。参赛选手需要预测骑行目的地的区块位置。以下代码是knn算法,结合了leak。这里主要有两点创新:给算出来的距离值除以频度的1.1次方,这个加了很多分对于新用户又使用了一个新的knn,其他算法在处理新用户的时候也可以参考下,knn算法产生的特征可以融合进xgb再训练。importcsv importmath importdatetime #user_habit_dict:每个用户的乘车记录:起点,终点,距离 user_habit_dict={} #start_end_dict:每条记录的起点,终点对 start_end_dict

  • 极化码小结(1)

    一个暑假过去了,身心懈怠,知识荒疏,为了方便接下类的研究工作。这里对已经掌握的极化码知识做一个简单的小结。 Chapter1极化码简介:   极化码建立在信道极化这一现象之上。   信道极化现象来自于信道合并与信道分裂这两种信道操作。 信道合并:   将N个独立信道W通过变换使之变为一个具有“集体意义”的信道WN,这里“集体意义”的产生来源于变换,而变换遵循固定的规则。   首先,变换是一个递归过程。对于N(N=2n)个独立信道W,想要将其变为一个具有“集体意义”的信道WN需要进行n次信道操作,每次信道操作都将N个信道变为N/2个小型的信道集合体,这样通过递归N-->N/2-->N/4-->……-->4-->2-->1就可以实现N个信道的合并。   每次信道操作又分为两个部分: 对信道输入向量的运算。譬如在B-DMC信道中,输入向量服从等概率分布,我们假设输入向量为。对它进行的操作为。 置换操作。对于上一步得到的向量,通过置换操作使其变为。   图解:   对于一个单独的信道W:X—>Y来说,它的信道转移概率为W(Y|X)。对于具有

  • 模型训练竞品收集-百度

    百度BML一、产品介绍百度机器学习BML(BaiduMachineLearning)是一款端到端的AI开发和部署平台。基于BML,用户可以一站式完成数据处理、模型训练与评估、服务部署等工作。平台提供了高性能的集群训练环境,海量算法框架与模型案例,以及操作便捷的预测服务工具。用户可以专注于模型与算法本身,并得到优质的模型与预测效果。 二、应用场景BML可以帮助企业和开发者实现图像识别、视频分析、语音识别、推荐、预测等多种业务场景,赋能金融、教育、医疗、安防、零售、工业制造等多种行业。用户类型,工作区适合公民数据科学家,关注易用性和使用时长;训练适合专家数据科学家,关注性能和资源利用率;预测适合业务管理和运维人员,关注性能和资源利用率。模型训练,支持多种深度/机器学习框架,一键发起大规模训练作业,最大化提升训练效率及效果。主要包括四部分:深度学习作业、机器学习作业、AutoDL作业、AutoML作业。1.深度学习作业,集成了多种开源的深度学习框架。用户可以使用不同的框架,编写代码进行多轮训练和迭代,并将产生的模型和各种数据上传到BOS存储上。2.机器学习作业,自主研发的丰富、高效、成熟的机

  • 给AVS添加描述(how to add a description to a video)

    UPDATEyoumightneededitfewfiles.1.addtheinputfieldtothetplfile:/templates/frontend/yourcolor/upload_video.tplnamethefieldasdescription<divclass="separator"><labelfor="description">Description:</label><textareaname="description"id="upload_video_description">{$video.description}</textarea><br/><spanclass="expl">Descriptionofvideorequired.</span><br/><spanid="video_tags_error"class="error"style="display:none;">{tc='upload.video_description_

  • 《道路工程》——(九)道路平面线形

    目录圆曲线圆曲线半径公式的推导圆曲线最小半径的选用极限最小半径不设超高的最小半径一般最小半径缓和曲线设置缓和曲线的目的缓和曲线长度计算不设缓和曲线的平曲线半径缓和曲线的要素计算曲线上的超高与加宽超高的设置和超高值超高缓和段加宽加宽缓和段平面线形的组合与衔接直线与曲线的组合曲线与曲线的组合平面线形设计一般原则 道路线形指道路路幅中心线(又称中线)的立体形状。道路中线在水平面上的投影形状称为平面线形。 道路线形对交通安全、行驶舒适具有重要作用。必须保证道路线形的连续与均衡性,城市道路的平面定线要受到城市道路网布局、道路规划红线宽度和沿街建筑物位置等因素的约束,平面线形只能局限在一定范围内动,定线的自由度要比公路小得多,所以必须加强城市道路网规划对道路定线的指导。 道路线形还受用地开发、征地拆迁、环境、景观、美学、文物保护、名树保留、社区影响、公众参与等因素的影响,特别是对道路的拓宽、辟通、改造等。调整线形或变更局部路段的布置。 圆曲线 在路线转折处,一般均用圆曲线连接,以使车辆平顺地由前一条直线路段转向驶入后一条直线路段,所以要分析研究汽车在弯道上行驶的规律和特点,以便采取有效措施来确保汽

  • P1486 [NOI2004]郁闷的出纳员

    题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工。作为一名出纳员,我的任务之一便是统计每位员工的工资。这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资。如果他心情好,就可能把每位员工的工资加上一个相同的量。反之,如果心情不好,就可能把他们的工资扣除一个相同的量。我真不知道除了调工资他还做什么其它事情。 工资的频繁调整很让员工反感,尤其是集体扣除工资的时候,一旦某位员工发现自己的工资已经低于了合同规定的工资下界,他就会立刻气愤地离开公司,并且再也不会回来了。每位员工的工资下界都是统一规定的。每当一个人离开公司,我就要从电脑中把他的工资档案删去,同样,每当公司招聘了一位新员工,我就得为他新建一个工资档案。 老板经常到我这边来询问工资情况,他并不问具体某位员工的工资情况,而是问现在工资第k多的员工拿多少工资。每当这时,我就不得不对数万个员工进行一次漫长的排序,然后告诉他答案。 好了,现在你已经对我的工作了解不少了。正如你猜的那样,我想请你编一个工资统计程序。怎么样,不是很困难吧? 如果某个员工的初始工资低于最低工资标准,那么将不计入最后的答案

  • 我的第一个Springboot项目

    第一步,新建Project                   把application.properties改成application.yml      application.yml的内容:url?后面参数很关键 #应用服务WEB访问端口复制 mybatis:mapper-locations:classpath:mapper/*.xmltype-aliases-package:com.example.demo.beanspring:datasource:name:testdbpassword:123456username:rooturl:jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaiserver:port:8080复制 复制 创建文件后的目录树:    

  • 安装 Docker &lt;一&gt;

    一、docker简介        Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。     一个完整的Docker有以下几个部分组成:dockerClient客户端;DockerDaemon守护进程;DockerImage镜像;DockerContainer容器。 二、docker的优点 1)标准化应用发布,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用; 2)节约时间,快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级; 3)方便构建基于SOA架构或微服务架构的系统,通过服务编排,更好的松耦合; 4)节约成本,以前一个虚拟机至少需要几个G的磁盘空间,docker容器可以减少到MB级; 5)方便持续集成,通过与代码进行关联使持续集成非常方便; 6)可以作为集群系统的轻量主机或节点,在IaaS

  • 四钟权限修饰符。

    Java中四种权限修饰符;              public     >    protected     >    (default)     >    private 同一个类      yes              yes            

  • Kubernetes服务目录的设计

    【编者的话】OpenShift3.6新版本包括新的服务目录和服务中介技术预演版。它们是基于Kubernetes的孵化项目KubernetesServiceCatalogproject。服务目录通过OpenServiceBrokerAPI集成服务中介,由服务中介管理服务的创建和管理;这篇文章将深入介绍服务目录的设计。 服务目录是基于Kubernetes的OpenServiceBrokerAPI实现。它包括如下功能: 服务中介注册到Kubernetes上; 服务中介指定一组服务(或这些服务的变体),提供给Kubernetes用户; Kubernetes用户可以发现可用的服务; Kubernetes用户可以请求新的服务实例; Kubernetes用户可以链接服务实例到一组Pods上; 这种底层机制允许在Kubernetes中运行的应用程序与它们使用的服务之间松耦合。服务中介是一个黑盒实体,可以运行在Kubernetes外。服务中介允许应用专注于自己的业务逻辑,将服务的管理交给服务中介。 术语 应用(Application):服务目录中的服务与Kubernetes中的“服务”是不同的。为

  • 冒泡与阻止冒泡事件

    1<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<head> 4<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> 5<styletype="text/css"> 6.redBorder{ 7border:2pxsolidred; 8} 9 10.test1{ 11width:240px; 12height:150px; 13background-color:#3493B9; 14text-align:center; 15padding:3px0px; 16} 17 18.test2{ 19width:160px; 20height:100px; 21background-color:#47BAE7; 22text-align:center; 23line-height:20px; 24m

  • QImage 与 Mat 互转

    QImage转Mat //Qt读入彩色图后一般为Format_RGB32格式(4通道),而OpenCV一般用3通道的,因此进行了转换。 cv::MatQImage2Mat(QImageimage) { cv::Matmat; switch(image.format()) { caseQImage::Format_RGB32://一般Qt读入彩色图后为此格式 mat=cv::Mat(image.height(),image.width(),CV_8UC4,(void*)image.constBits(),image.bytesPerLine()); cv::cvtColor(mat,mat,cv::COLOR_BGRA2BGR);//转3通道 break; caseQImage::Format_RGB888: mat=cv::Mat(image.height(),image.width(),CV_8UC3,(void*)image.constBits(),image.bytesPerLine()); cv::cvtColor(mat,mat,cv::COLOR_RGB2BGR); br

  • 【CentOS 6.5】安装gcc-4.8.2和Qt5.2

    因为CentOS6.5中gcc版本比较低.安装Qt5.2前先升级gcc.首先下载gcc,附上百度盘地址:http://pan.baidu.com/s/1jGibvqY解压安装包,并进入到解压文件夹内cdgcc-4.8.2 //下载编译所需要的动态库 ./contrib/download_prerequisites //回到解压文件夹所在的路径下,我是解压到tmp下的 cd.. //在/tmp创建文件夹gcc-bulid-4.8.2 mkdirgcc-bulid-4.8.2复制 编译安装 cd/tmp/gcc-build-4.8.2 //配置 /tmp/gcc-4.8.2/configure--enable-checking=release--enable-languages=c,c++--disable-multilib //开始编译,指定4个CPU编译,节省时间 make-j4 //10分钟左右后完成,(在虚拟机中) //安装 sudomakeinstall复制 检查gcc版本 gcc--version复制 安装Qt5.2附上下载地址:http://pan.b

  • Masonry介绍与使用实践:快速上手Autolayout【转载】

    MagicNumber -> autoresizingMask -> autolayout复制 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-iphone3gs时代window的size固定为(320,480)我们只需要简单计算一下相对位置就好了 在iphone4-iphone4s时代苹果推出了retina屏但是给了码农们非常大的福利:window的size不变 在iphone5-iphone5s时代window的size变了(320,568)这时autoresizingMask派上了用场(为啥这时候不用Autolayout?因为还要支持ios5呗)简单的适配一下即可 在iphone6+时代window的width也发生了变化(相对5和5s的屏幕比例没有变化)终于是时候抛弃autoresizingMask改用autolayout了(不用支持ios5了相对于屏幕适配的多样性来说autoresizingMask也已经过时了) 那如何快速的上手autolayout呢?说实话当年ios6推出的同时新增了autolayout

相关推荐

推荐阅读