机器学习算法 java_Java开发人员的机器学习,第1部分:机器学习算法

article/2025/9/22 18:42:17

机器学习算法 java

无人驾驶汽车,面部检测软件和语音控制扬声器均基于机器学习技术和框架构建,而这些仅仅是第一波。 在接下来的十年中,新一代产品将改变我们的世界,为软件开发以及我们创建和使用的应用程序和产品启动新的方法。

作为Java开发人员,您想超越这一曲线,特别是因为高科技公司开始认真地投资于机器学习。 今天所学的内容,可以在未来五年内继续发展,但是必须从某个地方开始。

本文将帮助您入门。 您将首先对机器学习的工作方式有一个第一印象,然后是实现和训练机器学习算法的简短指南。 在研究了学习算法和可用于训练,评分和选择最适合的预测功能的功能的内部之后,您将获得使用JVM框架Weka构建机器学习解决方案的概述。 本文重点介绍有监督的机器学习,这是开发智能应用程序的最常用方法。

Java开发人员的机器学习,第2部分

您准备好下一步了吗? 本教程的后半部分向您展示如何开发和部署机器学习数据管道。

机器学习和人工智能

机器学习已经从人工智能领域发展而来,该领域旨在生产能够模仿人类智能的机器。 尽管机器学习是计算机科学中的新兴趋势,但人工智能并不是一个新的科学领域。 由Alan Turing在1950年代初期开发的Turing测试是为确定计算机是否具有真实智能而创建的首批测试之一。 根据图灵测试,一台计算机可以通过欺骗人们以为它也是人类来证明人类的智慧。

许多最先进的机器学习方法都基于数十年的概念。 在过去十年中发生的变化是,计算机(和分布式计算平台)现在具有机器学习算法所需的处理能力。 大多数机器学习算法都需要处理大量的矩阵乘法和其他数学运算。 用于管理这些计算的计算技术甚至在二十年前还不存在,但是今天已经存在。

机器学习使程序可以执行质量改进过程并扩展其功能,而无需人工参与。 使用机器学习构建的程序能够更新或扩展自己的代码。

监督学习与无监督学习

监督学习和无监督学习是最流行的机器学习方法。 两者都需要向机器提供大量数据记录以进行关联并从中学习。 这种收集的数据记录通常称为特征向量。 对于单独的房屋,特征向量可能包括诸如房屋的整体大小,房间数量和房屋的年龄之类的特征。

监督学习中 ,训练了机器学习算法以正确响应与特征向量有关的问题。 为了训练算法,向机器提供一组特征向量和一个关联的标签。 标签通常由人工注释者提供,代表给定问题的正确“答案”。 学习算法分析特征向量及其正确的标签,以找到它们之间的内部结构和关系。 因此,机器学习正确响应查询。

例如,可以使用特征向量来训练智能房地产应用程序,这些特征向量包括一系列房屋的大小,房间数量和各自的年龄。 贴标签的人会根据这些因素为每个房屋贴上正确的房价。 通过分析这些数据,将对房地产应用程序进行培训,以回答以下问题:“ 我能为这所房子多少钱?

培训过程结束后,将不会标记新的输入数据。 即使对于看不见的,未标记的特征向量,机器也将能够正确响应查询。

无监督学习中 ,对算法进行编程以预测答案而无需人工标记甚至问题。 非监督学习不是预先确定标签或结果是什么,而是利用海量数据集和处理能力来发现以前未知的相关性。 例如,在消费产品营销中,无监督学习可用于识别隐藏的关系或消费者分组,最终导致新的或改进的营销策略。

本文重点介绍有监督的机器学习,这是当今最常见的机器学习方法。

有监督的机器学习

所有机器学习都基于数据。 对于有监督的机器学习项目,您将需要以有意义的方式为所需的结果标记数据。 在表1中,请注意,房屋记录的每一行都包含“房屋价格”标签。 通过将行数据与房屋价格标签相关联,该算法最终将能够预测不在其数据集中的房屋的市场价格(请注意,房屋大小基于平方米,房屋价格基于欧元)。

表1.房屋记录

特征 特征 特征 标签
房子大小 房间的数量 房屋年龄 房屋概算
为90m 2 /295英尺 2间 23年 249,000€
101米2 /331英尺 3间 不适用 338,000€
1330平方米/ 4363英尺 11间 12年 6,500,000€

在早期阶段,您可能会手工标记数据记录,但最终可能会训练程序以使此过程自动化。 您可能已经在电子邮件应用程序中看到了这种情况,将电子邮件移入垃圾邮件文件夹会导致查询“这是垃圾邮件吗?”。 当您回复时,您正在训练程序以识别您不想看到的邮件。 该应用程序的垃圾邮件过滤器学习如何标记来自相同来源或承载相似内容的将来的邮件并进行处理。

带标签的数据集仅用于培训和测试目的。 此阶段结束后,机器学习算法将在未标记的数据实例上工作。 例如,您可以向预测算法提供新的,未标记的房屋记录,并且它将根据训练数据自动预测预期的房屋价格。

机器如何学习预测

监督式机器学习的挑战是为特定问题找到合适的预测功能。 从数学上讲,挑战在于找到采用输入变量x并返回预测值y的输入输出函数。 该假设函数 )是训练过程的输出。 通常,假设函数也称为目标函数或预测函数。

jw grothml1目标 格里戈尔·罗斯(Gregor Roth)

图1.目标函数

在大多数情况下, x表示多数据点。 在我们的示例中,这可能是由房屋大小值和房间数量值定义的单个房屋的二维数据点。 这些值的数组称为特征向量 。 给定一个具体的目标函数,该函数可用于对每个特征向量x进行预测。 要预测单个房屋的价格,可以使用包含房屋大小和房间数量的特征向量{101.0,3.0}调用目标函数:


// target function h (which is the output of the learn process)
Function<Double[], Double> h = ...;// set the feature vector with house size=101 and number-of-rooms=3
Double[] x = new Double[] { 101.0, 3.0 };// and predicted the house price (label)
double y = h.apply(x);

在清单1中,数组变量x值表示房屋的特征向量。 目标函数返回的y值是预测的房价。

机器学习的挑战是定义一个目标函数,该函数对于未知的,看不见的数据实例将尽可能准确地工作。 在机器学习中,目标函数( )有时被称为模型 。 该模型是学习过程的结果。

jw grothml1图1 格雷戈尔·罗斯(Gregor Roth)

图2.机器学习模型

基于标记的训练示例,学习算法在训练数据中查找结构或模式。 根据这些数据,可以得出一个可以从该数据很好地概括的模型。

通常,学习过程是探索性的 。 在大多数情况下,将通过使用学习算法和配置的不同变体来多次执行该过程。

最终,将基于性能指标评估所有模型,并选择最佳模型。 然后,该模型将用于计算未来未标记数据实例的预测。

线性回归

要训​​练机器思考,第一步是选择将要使用的学习算法。 线性回归是最简单,最受欢迎的监督学习算法之一。 该算法假定输入要素和输出标签之间的关系是线性的 。 下面的通用线性回归函数通过汇总特征向量的每个元素乘以theta参数(θ)来返回预测值。 theta参数在训练过程中用于根据训练数据调整或“调整”回归函数。

jw grothml1功能 格里戈尔·罗斯(Gregor Roth)

图3.通用线性回归函数

在线性回归函数中,theta参数和特征参数由订阅号枚举。 订阅号指示矢量中theta参数(θ)和特征参数(x)的位置。 请注意,出于计算目的,特征x 0是设置值为1的常数偏移项。 结果,特定于域的特征的索引(例如房屋大小)将从x 1开始。 例如,如果将x 1设置为房屋特征向量的第一个值(房屋大小),则将x 2设置为下一个值(房间数等)。

清单2显示了此线性回归函数的Java实现,以数学方式表示为 (x)。 为简单起见,使用数据类型double进行计算。 在apply()方法中,期望在该函数之外将数组的第一个元素设置为1.0。

清单2. Java中的线性回归


public class LinearRegressionFunction implements Function<Double[], Double> {private final double[] thetaVector;LinearRegressionFunction(double[] thetaVector) {this.thetaVector = Arrays.copyOf(thetaVector, thetaVector.length);}public Double apply(Double[] featureVector) {// for computational reasons the first element has to be 1.0assert featureVector[0] == 1.0;// simple, sequential implementationdouble prediction = 0;for (int j = 0; j < thetaVector.length; j++) {prediction += thetaVector[j] * featureVector[j];}return prediction;}public double[] getThetas() {return Arrays.copyOf(thetaVector, thetaVector.length);}
}

为了创建LinearRegressionFunction的新实例,必须设置theta参数。 theta参数或向量用于将通用回归函数调整为基础训练数据。 程序的theta参数将在学习过程中根据训练示例进行调整。 训练目标功能的质量只能与给定训练数据的质量一样好。

在下面的示例中,将实例化LinearRegressionFunction以根据房屋大小预测房屋价格。 考虑到x 0必须为1.0的常数,使用两个theta参数实例化目标函数。 theta参数是学习过程的输出。 创建新实例后,将对1330平方米大小的房屋的价格进行如下预测:


// the theta vector used here was output of a train process
double[] thetaVector = new double[] { 1.004579, 5.286822 };
LinearRegressionFunction targetFunction = new LinearRegressionFunction(thetaVector);// create the feature vector function with x0=1 (for computational reasons) and x1=house-size
Double[] featureVector = new Double[] { 1.0, 1330.0 };// make the prediction
double predictedPrice = targetFunction.apply(featureVector);

目标函数的预测线在下表中显示为蓝线。 通过执行所有房屋尺寸值的目标函数来计算该线。 该图表还包括用于培训的价格大小对。

jw grothml1图2 格里戈尔·罗斯(Gregor Roth)

图4.目标函数的预测线

到目前为止,预测图似乎非常合适。 图形坐标(截距和斜率)由theta向量{ 1.004579, 5.286822 } 。 但是您怎么知道这个theta向量最适合您的应用? 如果更改了第一个或第二个theta参数,该函数是否会更合适? 为了确定最合适的theta参数向量,您需要一个效用函数 ,它将评估目标函数的执行情况。

对目标功能进行评分

在机器学习中, 成本函数 (J(θ))用于计算平均误差或给定目标函数的“成本”。

jw grothml1图3 格里戈尔·罗斯(Gregor Roth)

图5.成本函数

翻译自: https://www.infoworld.com/article/3224505/machine-learning-for-java-developers.html

机器学习算法 java


http://chatgpt.dhexx.cn/article/Wh4oP3Mi.shtml

相关文章

【Java应用】使用Java实现机器学习算法:聚类、分类、预测

一、引言 1、机器学习算法概述 机器学习是一种人工智能技术&#xff0c;旨在通过使用数据和统计分析来让计算机系统自动改进性能。机器学习算法可分为三大类&#xff1a;聚类、分类和预测。聚类算法用于将数据集分成不同的群组&#xff1b;分类算法用于将数据分为不同的类别&…

KL15和KL30

一、KL15节点方式 这是最直接和简单的方法&#xff0c;将所有CAN总线上的ECU电源都接在KL15上面。(KL15是当点火开关在ON上才接通蓄电池电源&#xff09; 缺点&#xff0c;无法适应所有的ECU&#xff1a; 1.可以断电关闭&#xff0c;比如座椅控制。 2.有些ECU在汽车到OFF档时…

KL15和KL30节点网络管理概念

一、KL15节点方式 这是最直接和简单的方法&#xff0c;将所有CAN总线上的ECU电源都接在KL15上面。(KL15是当点火开关在ON上才接通蓄电池电源&#xff09; 缺点&#xff0c;无法适应所有的ECU&#xff1a; 1.可以断电关闭&#xff0c;比如座椅控制。 2.有些ECU在汽车到OFF档时…

KL15 是什么?ACC,crank,on等

KL含义 KL is the abbreviation for klemme which is the German term for connector / connection.KL是“ klemme”的缩写&#xff0c;这是德语中连接器或连接的术语。 KL30 &#xff0c;通常表示电瓶的正极。positive KL31&#xff0c;通常表示电瓶的负极。negative KL15, 通…

CANoe串口控制电源

一、工具 CANoe12.0版本&#xff0c;VN1630A 可控制电源---固纬PSW 30-36 二、CAPL编写 1、在variables变量总定义串口的一些配置信息 这里定义的port_KL30和port_KL15具体的值可以去查看设备管理器连接的串口值是多少。 2、初始化串口定义 3、串口发送函数 一切定义配置…

MKS GEN_L V2.1 Klipper固件使用说明书

广州谦辉信息科技有限公司 MKS GEN_L V2.1 Klipper固件使用说明书 创客基地QQ群&#xff1a;489095605 232237692 邮箱&#xff1a;Huangkaidamakerbase.com.cn 文章目录 一、产品简述1.1特点优势1.2主板参数1.3接线图1.4尺寸图 二、固件下载、更新2.1固件下载2.2 使用Xloader更…

Vector - VT System - 板卡_VT7001

接上篇我们介绍完了背板VT8006和VT8012&#xff0c;今天我们来介绍下电源模块板卡VT7001&#xff0c;这个板卡是我们在不需要程控电源的时候依然能够实现精细化的电压、电流控制及检查的板卡&#xff0c;并且在脚本开发中无需考虑时延的一个模块。我们使用的大部分设备无论是继…

车载中电源的术语

文章目录 前言电源模式KLR模式KL30模式KL31模式KL15模式KL50模式 前言 ​ 对于车载测试来说&#xff0c;一般是很少进行电源测试&#xff0c;但是这并不代表着我们不用去了解&#xff0c;在面试中也会经常问到电源相关的一部分知识&#xff0c;所以还是有必要了解一下的 电源…

主动/被动唤醒源与网络主动/被动唤醒

1主动唤醒源/被动唤醒源 主动唤醒源&#xff1a;承担着主动唤醒网络责任的唤醒源&#xff0c;称为主动唤醒源。比如&#xff1a;KL15硬线&#xff0c;User请求&#xff0c;ERA信号等。 KL15硬线&#xff1a;通过KL15硬线方式唤醒网络&#xff0c;说明当前网络没有节点参与通信…

【车载】【汽车电源】简述汽车电源系统

一、汽车电源 一般来讲&#xff0c;传统能源汽车的电源主要来源于电池和发电机&#xff0c;电池为汽车启动提供能量来源&#xff0c;当汽车启动完成之后&#xff0c;汽车的发电机又会为电池充电。由于发电机和发动机是靠皮带连接的&#xff0c;所以广义上也称发动机发电。而发电…

AUTOSAR EcuM学习(一)

简介 ECU Manager(EcuM)的主要任务包括&#xff1a; 初始化(initializes)/反初始化(de-initializes)OS、SchM及BSW模块&#xff1b;执行ECU的关闭(SHUTDOWN)和睡眠(SLEEP)动作&#xff1b;处理唤醒(wakeup)事件并对唤醒源进行校验(wakeup validation)。 最初ECU的整个状态管理…

AUTOSAR EcuM学习(二)

前言 本文以一个简化的示例看下ECU唤醒休眠的执行流程&#xff0c;通常不同项目因需求不同流程处理都会有所不同&#xff0c;本示例只是其中一种&#xff0c;并不是标准普适的流程。假设ECU休眠采用的是MCU掉电方式&#xff0c;且只有两个唤醒源&#xff1a;CAN和KL15&#xf…

KL15含义-- 汽车钥匙孔挡位

KL含义 KL是德文connector含义&#xff0c;芯片引脚的含义。 KL30 &#xff0c;通常表示电瓶的正极。positive KL31&#xff0c;通常表示电瓶的负极。negative KL15, 通常汽车处于RUN模式 KL50&#xff0c;通常汽车处于crank模式 KLR&#xff0c;通常汽车处于的ACC模式 汽车钥…

浅谈汽车应用中的KL15与KL30

浅谈汽车应用中的KL15与KL30 身处汽车行业或者经常看汽车应用的原理图&#xff0c;就经常能看到KL30和KL15等网络标号&#xff0c;这是什么意思&#xff0c;来简单聊下。 KL15指点火信号 KL30指蓄电池供电电压 为啥叫KL呢 其实他是德语Klemme的缩写&#xff0c;指的是ECU的管…

KL15和汽车各个档位

KL是德语Klemme的缩写&#xff0c;意思是ECU的管脚、接线柱&#xff0c;和Pin意思相同&#xff0c;后面的数字代表不同的电源模式。 KL15表示发动机的点火信号和启动车辆的信号&#xff0c;驾驶循环以此为准 KL15R&#xff0c;其中R表示Radio&#xff0c;用于启动车辆的仪表盘…

为什么点火信号叫KL15,蓄电池电压叫KL30?

在刚进入汽车行业时&#xff0c;听到前辈讨论问题时偶尔蹦出来的KL15、KL30&#xff0c;那会内心一脸懵逼&#xff0c;这啥意思呢&#xff1f; 当时也没好意思打断大家的讨论&#xff0c;直接询问。 等他们讨论完后悄咪咪的问了一下坐我对面的同事。 才知道KL15是指点火信号…

在微信开发者工具导入整个weui的实例,查看weui的用法

方法 下载weui的源代码&#xff0c;https://github.com/Tencent/weui-wxss/ &#xff0c; clone or download > Download ZIP解压&#xff0c;找到dist文件夹&#xff0c;在./weui-wxss-master/dist/打开“微信开发者工具”&#xff0c;选择“小程序” > “导入项目” &…

WeUI实例(官方)

博主最近想用小程序画几个页面&#xff0c;于是想试试WeUI的样式。但是没找到WeUI的文档&#xff0c;只找到了在线的实例演示。还有的例子是在div上显示的&#xff0c;当时比较疑惑。后来发现&#xff0c;可能是公众号的页面。 实例演示的链接&#xff1a;传送门 其实这些实例…

WeUI—微信官方UI库

WeUI 为微信 Web 服务量身设计 概述 WeUI是一套同微信原生视觉体验一致的基础样式库&#xff0c;由微信官方设计团队为微信 Web 开发量身设计&#xff0c;可以令用户的使用感知更加统一。包含button、cell、dialog、 progress, toast、article、icon等各式元素。 使用 方法一&a…

HTML5 weui笔记

按钮 <a href"javascript:;" class"weui_btn weui_btn_primary">按钮-确定-可用</a> <a href"javascript:;" class"weui_btn weui_btn_disabled weui_btn_primary">按钮-确定-不可用</a> <a href"jav…