AlgorithmStar 度量 计算组件

AlgorithmStar 度量 计算组件

AlgorithmStar

本文将会基于 AlgorithmStar 1.40 以及以上的版本来演示,度量 计算 组件 的使用!

目录

文章目录

  • AlgorithmStar 度量 计算组件
    • 目录
    • 获取到依赖库
    • 度量计算组件 计算实例
      • 距离计算代表 - 欧几里德距离计算组件
      • 相似度系数计算代表 - 向量余弦距离计算组件
      • 其它计算组件

在这里插入图片描述

获取到依赖库

在这里我们直接通过 maven 来将依赖库文件导入到我们的项目中,只需要在 pom.xml 中输入下面的依赖坐标即可!

    <dependencies><!-- Binding using the adapter of log4j2 --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>2.20.0</version><!--<scope>provided</scope>--></dependency><!-- Log4j2 log facade --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.20.0</version><!--<scope>provided</scope>--></dependency><!-- Log4j2 log real surface --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.20.0</version><!--<scope>provided</scope>--></dependency><dependency><groupId>io.github.BeardedManZhao</groupId><artifactId>algorithmStar</artifactId><version>1.40</version></dependency></dependencies>

度量计算组件 计算实例

距离算法主要就是针对两个坐标之间的距离进行研究与计算,著名的欧几里德为例,距离算法的使用如下所示,其它计算组件的使用方式与欧几里得相同,其它组件在下面也有介绍。

计算组件类型支持版本功能
io.github.beardedManZhao.algorithmStar.algorithm.distanceAlgorithm.EuclideanMetricv1.0计算欧几里得距离
io.github.beardedManZhao.algorithmStar.algorithm.distanceAlgorithm.CanberraDistancev1.0计算堪培拉距离
io.github.beardedManZhao.algorithmStar.algorithm.distanceAlgorithm.ChebyshevDistancev1.0计算切比雪夫距离
io.github.beardedManZhao.algorithmStar.algorithm.distanceAlgorithm.CosineDistancev1.0计算向量余弦度量
io.github.beardedManZhao.algorithmStar.algorithm.distanceAlgorithm.HausdorffDistancev1.0计算豪斯多夫距离
io.github.beardedManZhao.algorithmStar.algorithm.distanceAlgorithm.ManhattanDistancev1.0计算曼哈顿距离
io.github.beardedManZhao.algorithmStar.algorithm.distanceAlgorithm.MinkowskiDistancev1.0计算闵可夫斯基距离
io.github.beardedManZhao.algorithmStar.algorithm.distanceAlgorithm.StandardizedEuclideanDistancev1.0计算标准化欧几里得度量

距离计算代表 - 欧几里德距离计算组件

此计算组件所计算的数值会随着数据的区别增大而增大,它返回的是距离!

package top.lingyuzhao;import io.github.beardedManZhao.algorithmStar.algorithm.distanceAlgorithm.EuclideanMetric;
import io.github.beardedManZhao.algorithmStar.core.AlgorithmStar;
import io.github.beardedManZhao.algorithmStar.core.VectorFactory;
import io.github.beardedManZhao.algorithmStar.operands.coordinate.FloatingPointCoordinates;
import io.github.beardedManZhao.algorithmStar.operands.vector.IntegerVector;/*** @author zhao*/
public final class MAIN {public static void main(String[] args) {// 构建两个向量对象 分别是 [ 1 2 3 4 5 6 7 8 9 10 ] 以及 [ 1 2 3 4 5 6 7 8 90 10 ]final VectorFactory vectorFactory = AlgorithmStar.vectorFactory();final IntegerVector integerVector1 = vectorFactory.parseVector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);final IntegerVector integerVector2 = vectorFactory.parseVector(1, 2, 3, 4, 5, 6, 7, 8, 90, 10);// 获取到计算组件 这个计算组件是 德式度量 计算组件final EuclideanMetric<?, FloatingPointCoordinates<?>> euclideanMetric = EuclideanMetric.getInstance("euclideanMetric");// 打印一下两个向量System.out.println(integerVector1);System.out.println(integerVector2);// 构建一个 AS 库计算对象 我们只需要把 计算组件 和 被计算的操作数 传递给它就可以啦final AlgorithmStar<?, ?> instance = AlgorithmStar.getInstance();// 获取到 第一个向量与第一个向量的距离 不需要担心 toArray 的性能问题,其获取到的是向量对象中的引用// TODO 因为我们在计算的时候是不需要进行修改的操作,因此我们可以直接获取到引用,请注意,如果需要修改的话,请使用 copyToNewArray 方法final double trueDistance1 = instance.getTrueDistance(euclideanMetric, integerVector1.toArray(), integerVector1.toArray());System.out.println(trueDistance1);// 获取到 第一个向量与第二个向量的距离final double trueDistance2 = instance.getTrueDistance(euclideanMetric, integerVector1.toArray(), integerVector2.toArray());System.out.println(trueDistance2);}
}

下面是计算结果

[ 1 2 3 4 5 6 7 8 9 10 ]
[ 1 2 3 4 5 6 7 8 90 10 ]
0.0
81.0

相似度系数计算代表 - 向量余弦距离计算组件

此计算操作中返回的是两个被比较对象的相似度,其越是接近1,就越是相似,在下面我们进行了一个演示。

package top.lingyuzhao;import io.github.beardedManZhao.algorithmStar.algorithm.distanceAlgorithm.CosineDistance;
import io.github.beardedManZhao.algorithmStar.core.AlgorithmStar;
import io.github.beardedManZhao.algorithmStar.core.VectorFactory;
import io.github.beardedManZhao.algorithmStar.operands.vector.IntegerVector;/*** @author zhao*/
public final class MAIN {public static void main(String[] args) {// 构建两个向量对象 分别是 [ 1 2 3 4 5 6 7 8 9 10 ] 以及 [ 1 2 3 4 5 6 7 8 90 10 ]final VectorFactory vectorFactory = AlgorithmStar.vectorFactory();final IntegerVector integerVector1 = vectorFactory.parseVector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);final IntegerVector integerVector2 = vectorFactory.parseVector(1, 2, 3, 4, 5, 6, 7, 8, 90, 10);// 获取到计算组件 这个计算组件是 向量余弦距离 计算组件final CosineDistance<IntegerVector> cos = CosineDistance.getInstance("cos");// 打印一下两个向量System.out.println(integerVector1);System.out.println(integerVector2);// 构建一个 AS 库计算对象final AlgorithmStar<?, ?> instance = AlgorithmStar.getInstance();// 获取到 第一个向量与第一个向量的距离 不需要担心 toArray 的性能问题,其获取到的是向量对象中的引用// TODO 因为我们在计算的时候是不需要进行修改的操作,因此我们可以直接获取到引用,请注意,如果需要修改的话,请使用 copyToNewArray 方法final double trueDistance1 = instance.getTrueDistance(cos, integerVector1.toArray(), integerVector1.toArray());System.out.println(trueDistance1);// 获取到 第一个向量与第二个向量的距离final double trueDistance2 = instance.getTrueDistance(cos, integerVector1.toArray(), integerVector2.toArray());System.out.println(trueDistance2);}
}

下面是计算结果

[ 1 2 3 4 5 6 7 8 9 10 ]
[ 1 2 3 4 5 6 7 8 90 10 ]
1.0664819944598338
0.6443030653556969

其它计算组件

在上面的例子中,我们演示的就是两种计算组件的代表,实际上,每一个计算组件都有其特别之处,在 AS机器学习库中,这类计算组件都属于 io.github.beardedManZhao.algorithmStar.algorithm.distanceAlgorithm.DistanceAlgorithm 类的子类,因此想要使用更多计算组件,您可以修改上面例子中的 “获取计算组件” 操作!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis数据库(一):Redis数据库介绍与安装

Redis是一种高性能的开源内存数据库&#xff0c;支持多种数据结构&#xff08;如字符串、列表、集合等&#xff09;&#xff0c;具有快速的读写速度。它提供持久化、主从复制、高可用性和分布式部署等功能&#xff0c;适用于缓存、实时分析、消息队列等应用场景。Redis使用简单…

UE5 场景物体一键放入蓝图中

场景中&#xff0c;选择所有需要加入到蓝图的模型或物体。 点击 蓝图按钮&#xff0c;点击“将选项转换为蓝图” 在创建方法中&#xff0c;选择“子Actor”或着 “获取组件” 如果需要保持相对应的Actor的父子级别&#xff08;多层&#xff09;&#xff0c;那么选择“获取组件…

计算机组成原理 | 数据的表示、运算和校验(4)基本运算方法

补码加减&#xff08;运算与控制&#xff09; (-Y)补 [Y补]变补&#xff0c;这个要好好理解 (-Y)补&#xff1a;先将Y的符号位置反&#xff0c;在求-Y的补码&#xff08;数字为变反加1&#xff09; [Y补]变补&#xff1a;先求Y的补码&#xff08;数字为变反加1&#xff09;&…

protobuf实践+生成C++代码的解析

目录 1.实践1&#xff08;简单使用&#xff09; 2.实践2&#xff08;存储列表类数据&#xff09; 3.实践3&#xff08;定义RPC方法&#xff09; 4.解析protobuf的message类 5.解析protobuf的service类 6.Rpcchannel是什么呢&#xff1f; 1.实践1&#xff08;简单使用&…

Django中,update_or_create()

在Django中&#xff0c;可以使用update_or_create()方法来更新现有记录或创建新记录。该方法接受一个字典作为参数&#xff0c;用于指定要更新或创建的字段和对应的值。 update_or_create()方法的语法如下&#xff1a; 代码语言&#xff1a;python obj, created Model.obje…

python遍历文件夹中所有图片

python遍历文件夹中的图片-CSDN博客 这个是之前的版本&#xff0c;现在这个版本会更好&#xff0c;直接进来就在列表中 path glob.glob("1/*.jpg")print(path)print(len(path))path_img glob.glob("1/*.jpg")path_img.extend(path)print(len(path_img))…

问题解决:数据库自增id到最大报错

pgsql数据库id自增到长度问题&#xff1a; django.db.utils.DataError: nextval: reached maximum value of sequence "ip_prefix_info_id_seq" (32767) schema_name: ip_management_app table_name: ip_prefix_info # 先把自增id改到serial8&#xff0c;范围改大#…

行列视(RCV)在系统管理中的应用:解决生产型企业数据治理的挑战

行列视&#xff08;RCV&#xff09;作为一款面向生产型企业的综合性数据应用系统&#xff0c;在系统管理中扮演着至关重要的角色&#xff0c;特别是在解决生产型企业数据治理的挑战方面&#xff0c;表现出了卓越的性能。 首先&#xff0c;生产型企业面临着复杂而繁琐的数据治理…

学期结束如何发布期末成绩?

当期末的试卷最后一张被收起&#xff0c;当教室里的喧嚣逐渐沉寂&#xff0c;学生们的心中充满了对成绩的期待与忐忑。期末成绩&#xff0c;关乎着学生的心情&#xff0c;更关系到他们的未来学习动力。那么&#xff0c;如何在保护学生隐私的同时&#xff0c;高效地公布成绩呢&a…

vscode cmake debug 调试

在 VSCode 中调试使用 CMake 编译的程序&#xff0c;按照以下步骤进行&#xff1a; 1. **安装必要的扩展&#xff1a;** - 打开 VSCode&#xff0c;并确保你已经安装了以下扩展&#xff1a; - C/C&#xff08;由 Microsoft 提供&#xff09; - CMake - CMak…

Python Sqlalchemy基础使用

Python Sqlalchemy基础使用 Python Sqlalchemy基础使用基本使用创建Session创建ORM对象查询插入 进阶操作插入存在时更新执行SQL Python Sqlalchemy基础使用 这里记录一下&#xff0c;在编写python代码过程中使用Sqlalchemy的封装和基本使用方法。 (持续完善ing) 基本使用 …

代码随想录算法训练营Day48|188.买卖股票的最佳时机IV、309.最佳买卖股票时间含冷冻期、714.买卖股票的最佳时机含手续费

买卖股票的最佳时机IV . - 力扣&#xff08;LeetCode&#xff09; 至多可以购买k次&#xff0c;相比买卖股票的最佳时机III至多购买2次&#xff0c;区别在于次数不确定。 每买卖一次&#xff0c;dp数组的第二维度加2&#xff0c;dp数组的第二维度为2k1&#xff08;0-2k&…

TDengine 3.2.3.0 集成英特尔 AVX512!快来看看为你增添了哪些助力

在当今的 IoT 和智能制造领域&#xff0c;海量时序数据持续产生&#xff0c;对于这些数据的实时存储、高效查询和分析已经成为时序数据库&#xff08;Time Series Database&#xff0c;TSDB&#xff09;的核心竞争力。作为一款高性能的时序数据库&#xff0c;TDengine 不仅采用…

Pandas数据分析:掌握agg()方法的高级应用“

今天一个知识点&#xff1a; agg() 方法的 func 参数可以传入单个函数或函数列表。 agg() 方法在Pandas库中用于对DataFrame或Series的列进行聚合操作。func 参数可以传入单个&#xff08;值得注意的是&#xff0c;这里数据是一个单个而不是多个的内容&#xff0c;自己在这个…

【全开源】沃德会务会议管理系统(FastAdmin+ThinkPHP+Uniapp)

沃德会务会议管理系统一款基于FastAdminThinkPHPUniapp开发的会议管理系统&#xff0c;对会议流程、开支、数量、标准、供应商提供一种标准化的管理方法。以达到量化成本节约&#xff0c;风险缓解和服务质量提升的目的。适用于大型论坛、峰会、学术会议、政府大会、合作伙伴大会…

docker 安装达梦8

背景 X86-64架构使用Docker安装dm8_20240422_x86_rh6_64_rq_std_8.1.3.100_pack2.tar 1.下载Docker安装包 达梦官网下载dm8_20240422_x86_rh6_64_rq_std_8.1.3.100_pack2.tar安装包 快速下载通道&#xff1a; 达梦镜像包 2.将安装包上传至服务器&#xff0c;并加载镜像 拷…

结合人工智能的在线教育系统:开发与实践

人工智能&#xff08;AI&#xff09;正在革新各行各业&#xff0c;教育领域也不例外。结合AI技术的在线教育系统能够提供个性化的学习体验、智能化的教学辅助和高效的数据分析&#xff0c;从而大大提升教育质量和学习效果。本文将探讨结合AI技术的在线教育系统的开发与实践&…

如何调整C#中数组的大小

前言 数组存储多个相同类型的一种非常常用的数据结构。它长度是固定&#xff0c;也就是数组一旦创建大小就固定了。C# 数组不支持动态长度。那在C#中是否有方法可以调整数组大小呢&#xff1f;本文将通过示例介绍一种调整一维数组大小的方法。 方法 数组实例是从 System.Arr…

Type.GetTypeFromProgID 调用com组件

Type.GetTypeFromProgID 方法用于通过程序标识符&#xff08;ProgID&#xff09;获取 COM 类型。ProgID 是一个字符串标识符&#xff0c;用于标识 COM 组件。它通常在注册表中配置&#xff0c;并指向一个具体的 COM 类的 CLSID&#xff08;类标识符&#xff09;。 什么是 Prog…

【数据结构与算法】顺序查找、折半查找、分块查找

文章目录 顺序查找实现对有序表的顺序查找 二分查找&#xff08;折半查找&#xff09;实现二分查找判定树 分块查找&#xff08;索引顺序查找&#xff09;最理想的分块情况 顺序查找 顺序查找&#xff0c;又叫线性查找。适用于线性表。它的核心思路是从线性表的一端开始&#…