AlgorithmStar 度量 计算组件

news2024/10/7 16:20:25

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.coloradmin.cn/o/1859041.html

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

相关文章

麒麟信安系统关闭core文件操作

在使用麒麟信安系统时&#xff0c;如果应用程序运行过程中崩溃了&#xff0c;此时并不会导致内核崩溃&#xff0c;只会在tmp目录下产生崩溃数据&#xff0c;如下图 不过tmp目录下的分区容量有限&#xff0c;当崩溃的应用core文件过大时将会占用tmp空间&#xff0c;导致tmpfs分区…

零代码搭建AI应用-文心智能体的设计与实现

本教程旨在帮助你开发一个结合语音识别和信息查询技术的智能应用&#xff0c;为用户提供登山小技巧和心得体会&#xff0c;满足用户在户外运动中的需求。通过设计不同角色和场景&#xff0c;可以满足用户在不同生活领域的需求&#xff0c;例如在家庭、社交、职场等场景下提供不…

37. 变焦镜头

导论&#xff1a; 设计好的一组镜头如果变化镜片与镜片之间的空气厚度&#xff0c;镜头的焦距会随之变化。 通常来说一个系统的接收面尺寸大小是固定不变的。 设计要求&#xff1a; 设计一个简单的变焦镜头&#xff1a;入瞳直径25mm&#xff0c;焦距75~125mm&#xff0c;像…

为什么说大模型训练很难?

前言 在人工智能的浪潮中&#xff0c;大模型训练无疑是一股不可忽视的力量。然而&#xff0c;这背后的过程却充满了挑战与困难。今天&#xff0c;让我们一同揭开大模型训练的神秘面纱&#xff0c;探讨为何它值得您的关注与投入。 大模型训练的挑战 大模型训练之所以难&…

物联网技术-第5章-物联网数据处理

目录 1.物联网数据特征 2.物联网数据处理 &#xff08;1&#xff09;数据清洗 &#xff08;2&#xff09;数据存储 &#xff08;3&#xff09;数据融合 &#xff08;4&#xff09;数据挖掘 3.大数据基本概念 4.云计算基本概念 &#xff08;1&#xff09;背景 &#xf…

Python学习笔记18:进阶篇(七)常见标准库使用之OS模块

前言 入门到进阶的知识点基本都学习了&#xff0c;可能有一些遗漏的请谅解&#xff0c;不过只要坚持学习下去&#xff0c;在后面的学习中进行查缺补漏。 根据Python crash course书中的进度&#xff0c;要准备开始写小项目了。在这之前&#xff0c;我看了Python的官方教程&am…

Redis-主从复制-配置主从关系

文章目录 1、修改配置文件中的 bind ,注释该配置,取消绑定仅主机登录2、修改protected-mode 为no,取消保护模式3、查看redis的进程状态4、配置6380是6379的从机5、配置6381是6379的从机6、查看主机 6379 的主从信息 1、修改配置文件中的 bind ,注释该配置,取消绑定仅主机登录 …

Linux 运维 | 4.从零开始,文件目录特殊权限管理实践

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] 0x00 前言简述 描述&#xff1a;前一章&#xff0c;学习了Linux系统中的用户与用户组的管理&#xff0c;此章节我们将继续学习Linux系统中比较基础且重要的文件权限设置与属性管理&#xff0c;在L…

Zoho邮箱怎么注册?最强完整指南

Zoho企业邮箱&#xff0c;凭借其16年的产品历程和卓越的服务品质&#xff0c;已经成为全球超过1800万企业级客户的信赖之选。今天&#xff0c;我们将手把手教你如何注册Zoho邮箱。 一、Zoho邮箱是什么&#xff1f; Zoho邮箱是Zoho Workplace套件中的核心产品&#xff0c;专门…

2024年通信技术与计算机科学国际学术会议(ICCTCS 2024)

2024年通信技术与计算机科学国际学术会议&#xff08;ICCTCS 2024&#xff09; 2024 International Academic Conference on Communication Technology and Computer Science&#xff08;ICCTCS 2024&#xff09; 会议简介&#xff1a; 2024年通信技术与计算机科学国际学术会议…

[数据集][目标检测]花生米计数霉变检测数据集VOC+YOLO格式387张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;387 标注数量(xml文件个数)&#xff1a;387 标注数量(txt文件个数)&#xff1a;387 标注类别…

如何提高LabVIEW开发的效率?

提高LabVIEW开发效率对于工程师和研究人员来说非常重要&#xff0c;因为这不仅能缩短开发周期&#xff0c;还能提高系统的可靠性和可维护性。以下从多个角度详细分析如何提高LabVIEW开发的效率。 1. 项目规划与管理 1.1 明确需求 在项目开始前&#xff0c;详细明确项目需求&…

网络构建关键技术_2.IPv4与IPv6融合组网技术

互联网数字分配机构&#xff08;IANA&#xff09;在2016年已向国际互联网工程任务组&#xff08;IETF&#xff09;提出建议&#xff0c;要求新制定的国际互联网标准只支持IPv6&#xff0c;不再兼容IPv4。目前&#xff0c;IPv6已经成为唯一公认的下一代互联网商用解决方案&#…

苍穹外卖-管理端

课程安排 软件开发介绍 软件开发流程 角色分工 软件环境 项目介绍 产品原型 技术选型 开发环境搭建 niginx反向代理 完善登录功能 导入接口文档 Swagger注解 员工管理 新增员工 ThreadLocal 员工分页查询 启用禁用功能 修改员工信息 导入分类模块需求代码 公共字段自动填充 菜…

《中国尘肺病农民工调查报告(2023)》

这份报告由中华社会救助基金会大爱清尘基金发布。 《中国尘肺病农民工调查报告(2023)》是一份深入探讨中国尘肺病农民工现状与挑战的研究报告。报告不仅详细记录了尘肺病患者的生存困境、经济与医疗状况,还对政策的实施效果进行了评估,并提出了针对性的建议。通过对不同地区、…

Promise类型

Promise类型 Promise类型Promise是一个类型&#xff0c;与C#中的Task类似&#xff0c;是用来包装异步操作的容器。 (1)Promise有三种状态&#xff1a;pending&#xff08;进行中&#xff09;fulfilled/resolved&#xff08;已成功&#xff09;和rejected&#xff08;已失败&am…

react笔记-04redux篇

redux和react-redux笔记&#xff0c;以及项目中如何使用&#xff0c;对redux的封装&#xff0c;让其使用类似于vuex一样方便。 一、redux 1. redux工作流程 流程&#xff1a;创建action > dispatch分发action > 交给store > reducer加工数据返回给store 2. redux的…

Python 类对象

Python 类对象 经典迭代器 可迭代对象的定义&#xff1a; 使用内置的iter可以获取迭代器的对象。如果对象实现了能返回迭代器的__iter__方法&#xff0c;那么对象就是可迭代的。序列都可以迭代。实现了__getitem__方法&#xff0c;而且接受从0开始的索引&#xff0c;这种对象也…

2024年,AI的机会在行业大模型吗?

前言 随着科技的不断进步&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度改变着我们的世界。而在2024年&#xff0c;AI的机会无疑将更加聚焦于行业大模型。这些模型不仅代表着技术的巅峰&#xff0c;更是推动行业创新、提升效率、优化体验的关键力量。 行…

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

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