日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java归一化方法_Java之Normalizer(归一化)

發布時間:2023/12/31 java 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java归一化方法_Java之Normalizer(归一化) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是歸一化?

歸一化的概念在人工智能領域會普通看到, 比如使用TensorFlow框架編碼時,就會出現數據歸一化的步驟或函數。

簡單來說, 歸一化就是對一組數據進行轉換,使這組數據具備相同的格式或特性。舉例來說: 一組任意的整數數組:1,2,400,5000, 如果每個數都除以這組元素中的最大值的話(這里是5000),則這個數組元素的值位于0-1之間,滿足數學上概率的值的區間。

在AI中,對培訓數據進行歸一化的好處有:

1、保持合適的樣本間距

以上面的示例來說, 1和5000相差甚遠,如果以坐標圖繪制,則相差的太遠, 歸一化之后就好多了。

2、平等對待多個特征向量。

有個例子示房子面積和房子的數量對房價的影響。面積的體量明顯大于房子的數目,面積的因素很容易掩蓋數量的影響。所以,歸一化之后,更容易找到問題的解。

歸一化的數學方法

歸一化常見的數學方法有:

線性歸一化

也稱作(0,1)標準化 線性歸一化 , Min-Max標準化和離差標準化。是對原始數據進行線性變換,變換后的結果值在0到1之間。

公式是: X = (x-Min)/(Max-Min)

均值標準差歸一化

使用均值和標準差進行數據的標準化。轉換后的數據符合正態分布, 即均值為0, 標準差為1。

公式是:X= x-均值/標準差

Sigmoid函數歸一化

Java歸一化類Normalizer

JDK中提供了一個歸一化類:java.text.Normalizer , 和傳統的歸一化有點區別, 這個類主要是對字符串編碼的轉換。從該類的包名也可以看出,這個類處理的是文本的數據。

為什么會有編碼的問題呢? 這個還要從計算機的原理說起, 計算機中使用1表示高電平,使用0表示低電平,簡單點理解就是電源要么開,要么關。

ASCII碼應該是最早熟悉的字符編碼了,(American Standard Code for Information Interchange): 美國信息交換標準代碼,其實用的是8個比特位(1)個字節來表示拉丁字母以及一些特殊字符,但是8個比特位最多能有256種表示方式(比如0100 0001 表示大寫的A, 換算成十進制是65,十六進制表示是0x41),但是漢字等有成千上百個,于是出現了 GB2312、GBK、Unicode等編碼。

Unicode(統一碼、萬國碼、單一碼),是業界統一的標準,該標準更多兩個字節來表示字符(最多可以表示65536個字符)。 但這個標準又有不同的版本,比如UTF-8、UTF-16和UTF-32。同一個字符可能出現不同的編碼方式。

比如 á (小寫a上面有一個第四聲),就有兩種編碼方式:

編碼方式1:00C1 , 一個字符表示

編碼方式2:0041+0301 , 兩個字符表示

雖然同是á , 但是在Java中進行字符串匹配是不相同的, 所以需要進行歸一化處理。 示例代碼如下:

public class NormalizerTest {

// á

@Test

public void base() {

// 歸一化前

String str1 = "\u00C1";

System.out.println(str1);

String str2 = "\u0041" + "\u0301";

System.out.println(str2);

// Assert.assertTrue(str1.equals(str2)); //失敗

// 歸一化后

str1 = Normalizer.normalize(str1, Normalizer.Form.NFC);

str2 = Normalizer.normalize(str2, Normalizer.Form.NFC);

System.out.println(str1);

System.out.println(str2);

Assert.assertTrue(str1.equals(str2)); // 成功

}

}

normalize()方法有兩個參數:

第一個參數是需要歸一化的字符串

第二個參數是Unicode規范化的類型,該類型參數有四種:

NFD 典型分解

NFC 兼容性分解

NFKD 規范分解,規范組成

NFKC 兼容性分解,規范組成

NF 是normalization-type的簡寫。

類型細節參考:

http://www.unicode.org/reports/tr15/tr15-23.html

Java的Normalizer類的說明參考:

https://docs.oracle.com/javase/7/docs/api/java/text/Normalizer.html

總結

以上是生活随笔為你收集整理的java归一化方法_Java之Normalizer(归一化)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。