java normalize

2024-08-21 10:36
文章标签 java normalize

本文主要是介绍java normalize,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

上期回顾

在上期文章中,我们深入探讨了如何在 Java 中使用流和 Collectors 工具类处理集合中的相同字段对象。通过分组、聚合和去重操作,我们展示了如何有效地处理数据集。本期文章将基于这些基础知识,进一步研究在 Java 中如何进行数据归一化 (Normalization)。

前言

在数据处理和机器学习中,归一化是一个非常重要的步骤。归一化(Normalization)通常指的是将数据按比例缩放到一定的范围内,常见的范围包括 [0,1] 和 [-1,1]。通过归一化,数据的不同量级可以被统一处理,这对于优化算法的性能和模型的训练效果至关重要。本文将详细介绍在 Java 中如何进行数据归一化,并通过具体的代码示例和案例分析,帮助你在实际项目中应用这些技术。

摘要

本文旨在探讨 Java 中数据归一化的技术。我们将介绍几种常见的归一化方法,包括 Min-Max 归一化和 Z-score 标准化,并通过代码示例展示这些方法的实现。本文还将分析不同方法的优缺点,并提供测试用例验证代码的正确性。最后,我们将讨论归一化在机器学习和数据处理中的使用场景。

正文

知识点源码分析

在数据处理领域,归一化是将不同量级的数据按比例缩放到一个相对一致的范围。常见的归一化方法包括:

  1. Min-Max 归一化: 将数据缩放到 [0,1] 的范围。
  2. Z-score 标准化: 使数据的均值为 0,标准差为 1。
Min-Max 归一化

Min-Max 归一化的公式如下:

[
X’ = \frac{X - X_{\text{min}}}{X_{\text{max}} - X_{\text{min}}}
]

其中,( X ) 是原始数据,( X_{\text{min}} ) 和 ( X_{\text{max}} ) 分别是数据集的最小值和最大值,( X’ ) 是归一化后的数据。

Z-score 标准化

Z-score 标准化的公式如下:

[
Z = \frac{X - \mu}{\sigma}
]

其中,( \mu ) 是数据的均值,( \sigma ) 是标准差,( Z ) 是标准化后的数据。

案例Demo

Min-Max 归一化的实现

以下是一个简单的 Java 代码示例,演示如何进行 Min-Max 归一化:

import java.util.Arrays;public class NormalizationExample {public static double[] minMaxNormalize(double[] data) {double min = Arrays.stream(data).min().orElseThrow(IllegalArgumentException::new);double max = Arrays.stream(data).max().orElseThrow(IllegalArgumentException::new);return Arrays.stream(data).map(x -> (x - min) / (max - min)).toArray();}public static void main(String[] args) {double[] data = {10, 20, 30, 40, 50};double[] normalizedData = minMaxNormalize(data);System.out.println("Normalized Data: " + Arrays.toString(normalizedData));}
}
Z-score 标准化的实现

同样地,我们可以实现 Z-score 标准化:

import java.util.Arrays;public class NormalizationExample {public static double[] zScoreNormalize(double[] data) {double mean = Arrays.stream(data).average().orElseThrow(IllegalArgumentException::new);double std = Math.sqrt(Arrays.stream(data).map(x -> Math.pow(x - mean, 2)).average().orElseThrow(IllegalArgumentException::new));return Arrays.stream(data).map(x -> (x - mean) / std).toArray();}public static void main(String[] args) {double[] data = {10, 20, 30, 40, 50};double[] normalizedData = zScoreNormalize(data);System.out.println("Z-score Normalized Data: " + Arrays.toString(normalizedData));}
}

相关内容拓展及延伸

在实际项目中,归一化处理不仅限于数值数据,还可以应用于文本数据的向量化表示。对于多维数据集,可以对每一维进行独立的归一化。此外,还可以根据具体需求对归一化进行自定义调整。例如,针对带有异常值的数据,可能需要对数据进行修正或使用鲁棒的标准化方法,如中位数绝对偏差 (MAD)。

优缺点对比

Min-Max 归一化
  • 优点: 简单直接,适用于数据范围已知且没有异常值的情况。
  • 缺点: 对异常值敏感,容易受到极值的影响。
Z-score 标准化
  • 优点: 适用于数据分布未知或有异常值的情况,较为稳健。
  • 缺点: 计算较复杂,依赖于数据的均值和标准差。

测试用例

为了验证归一化的实现,我们可以编写以下测试用例:

import org.junit.Assert;
import org.junit.Test;public class NormalizationTest {@Testpublic void testMinMaxNormalize() {double[] data = {10, 20, 30, 40, 50};double[] expected = {0.0, 0.25, 0.5, 0.75, 1.0};double[] normalizedData = NormalizationExample.minMaxNormalize(data);Assert.assertArrayEquals(expected, normalizedData, 0.0001);}@Testpublic void testZScoreNormalize() {double[] data = {10, 20, 30, 40, 50};double[] expected = {-1.4142, -0.7071, 0.0, 0.7071, 1.4142};double[] normalizedData = NormalizationExample.zScoreNormalize(data);Assert.assertArrayEquals(expected, normalizedData, 0.0001);}
}

代码解析

上述测试用例使用了 JUnit 进行测试,验证了 Min-Max 归一化和 Z-score 标准化的正确性。我们通过比较预期结果和实际结果,确保了归一化方法的准确性。

使用场景

数据归一化在以下场景中尤为重要:

  1. 机器学习: 在训练模型前,数据归一化有助于加快收敛速度和提高模型的精度。
  2. 数据可视化: 为了更好地展示数据,归一化可以避免不同量级数据的影响,使得图表更加直观。
  3. 数据处理: 在对数据进行聚类或降维时,归一化可以确保各个维度的影响力相等。

全文总结

在本文中,我们详细介绍了 Java 中数据归一化的几种常用方法,包括 Min-Max 归一化和 Z-score 标准化。通过代码示例和测试用例,我们展示了这些方法的实现和应用场景。数据归一化是数据处理中的一个重要步骤,正确的归一化可以显著提升后续数据分析和建模的效果。

下期内容预告

在下一期文章中,我们将继续探讨数据处理的高级主题,特别是如何在 Java 中进行特征选择和工程,以优化机器学习模型的性能。敬请期待!

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

这篇关于java normalize的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1092917

相关文章

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.