线性回归算法(Java)

news/2024/10/11 14:06:27

 

 

手动实现线性回归(梯度下降法)

 1 public class LinearRegressionGD {
 2     private double learningRate;
 3     private int iterations;
 4     private double slope;
 5     private double intercept;
 6 
 7     public LinearRegressionGD(double learningRate, int iterations) {
 8         this.learningRate = learningRate;
 9         this.iterations = iterations;
10         this.slope = 0;
11         this.intercept = 0;
12     }
13 
14     public void fit(double[] x, double[] y) {
15         int n = x.length;
16 
17         for (int i = 0; i < iterations; i++) {
18             double slopeGradient = 0;
19             double interceptGradient = 0;
20 
21             // 计算梯度
22             for (int j = 0; j < n; j++) {
23                 double prediction = slope * x[j] + intercept;
24                 slopeGradient += - (2.0 / n) * x[j] * (y[j] - prediction);
25                 interceptGradient += - (2.0 / n) * (y[j] - prediction);
26             }
27 
28             // 更新参数
29             slope -= learningRate * slopeGradient;
30             intercept -= learningRate * interceptGradient;
31         }
32     }
33 
34     public double predict(double x) {
35         return slope * x + intercept;
36     }
37 
38     public static void main(String[] args) {
39         double[] x = {1, 2, 3, 4, 5};
40         double[] y = {50, 55, 65, 70, 85};
41 
42         LinearRegressionGD model = new LinearRegressionGD(0.01, 1000); // 设置学习率和迭代次数
43         model.fit(x, y);
44 
45         double predictedScore = model.predict(6); // 预测学习时间为6小时时的考试成绩
46         System.out.println("预测的考试成绩: " + predictedScore);
47     }
48 }

代码解析

  1. 构造函数:初始化学习率和迭代次数。
  2. fit 方法:使用梯度下降法更新斜率和截距。predict 方法:根据学习到的斜率和截距进行预测。
    • 计算当前预测值与实际值之间的误差,并根据误差计算梯度。
    • 通过梯度调整斜率和截距。
  3. main 方法:创建数据集,实例化模型,训练模型,并进行预测。

参数设置

  • learningRate:控制每次更新的步长。较小的学习率可能导致收敛速度慢,而较大的学习率可能导致不收敛。
  • iterations:指定训练模型的轮数。过少的迭代可能导致模型未收敛,过多的迭代则可能导致过拟合。

通过这种手动实现的方式,你可以灵活地控制学习率和迭代次数,以优化模型的性能。

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

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

相关文章

从模仿到创新:AI写作如何改变传统写作模式

随着人工智能技术的飞速发展,AI写作逐渐成为内容创作领域的一股新兴力量。从最初的模仿人类写作,到如今在多个领域实现创新,AI写作正在改变着传统写作模式,为文化产业注入新的活力。本文将从以下几个方面探讨AI写作对传统写作模式的影响及其创新之路。随着人工智能技术的飞…

[Java/Spring] 深入理解 : Spring ApplicationContext

[Java/Spring] 深入理解 : Spring ApplicationContext 1 概述 : ApplicationContext 简介 2 源码分析 ApplicationContext package org.springframework.context;public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFacto…

聊天系统产品分析:技术视角的深度探索

随着互联网技术的飞速发展,聊天系统已经成为人们日常沟通不可或缺的一部分。无论是社交媒体、即时通讯软件,还是企业协作平台,聊天系统都扮演着重要的角色。本文将从技术视角出发,对聊天系统的架构、关键技术、安全性以及用户体验进行深入分析。一、聊天系统的架构设计 聊天…

外贸电商系统如何保障交易安全:技术视角的深度解析与效果评估

外贸电商系统是一个集成了多种先进技术和功能的综合性平台,旨在为国际间的商业交易提供便捷、高效的服务。该系统不仅支持多语言界面和多种货币结算,还涵盖了从产品展示、客户管理、订单处理到物流配送、支付结算等全流程的管理功能。通过优化供应链管理,提高交易效率,减少…

Android iOS 使用 ARMS 用户体验监控(RUM)的最佳实践

本文主要介绍了 ARMS 用户体验监控的基本功能特性,并介绍了在几种常见场景下的最佳实践。ARMS 用户体验监控作为一个面向终端的实时监控服务,不仅能够提供专业的、深层次的、精细化的数据采集和洞察能力,还能通过集成 ARMS 应用监控和可观测链路 OpenTelemetry 版本进行端到…

[自用] 虚拟机windows11-x64,安装MySQL 8.0.32,记录

前面忘截图了 提示要求电脑里安装VS2015/2017/2019,但虚拟机里只有VS2013。网上说可以一起装,但是我虚拟机配置不太行,再说吧,不行用我自己笔记本,虽然也有点菜,但比虚拟机强。虚拟机配置安装之后的配置密码三个旧的特殊符号这少一步,写的是点击execute来应用配置 apply…

20222319zzs 2024-2025-1 《网络与系统攻防技术》实验一实验报告

1.实验内容 1.1知识回顾 1.1.1什么是缓冲区溢出? 计算机中,如果程序试图向一个缓冲区填充超出它能够容纳的数据,溢出的数据可能会覆盖其他重要的内存区域,导致程序运行失败甚至崩溃,如果这些溢出数据是精心设计的.则攻击者就可以利用它们指向预先设计的攻击代码(shellcod…

MQTT

安装 服务端 EMQX 客户端 MQTTXJava集成SrpingBoot pom.xml <dependency><groupId>org.springframework.integration</groupId><artifactId>spring-integration-mqtt</artifactId> </dependency> <dependency><groupId>org.ec…