【機器學習】數據預處理之數據歸一化

數據預處理之數據歸一化

  • 一、摘要
  • 二、數據歸一化概念
  • 三、數據歸一化實現方法
    • 3.1 最值歸一化方法
    • 3.2 均值方差歸一化方法

一、摘要

本文主要講述了數據歸一化(Feature Scaling)的重要性及其方法。首先通過腫瘤大小和發現時間的例子,說明了不同量綱特征在距離計算中可能導致偏差,從而引出數據歸一化的必要性。接著,介紹了最值歸一化(Normalization)的概念和方法,即將數據映射到0-1之間的尺度,并指出其適用于分布有明顯邊界的情況。最后,還指出了最值歸一化的一個缺點,即受異常值影響較大。

二、數據歸一化概念

  1. 歸一化是指一種簡化計算的方式,將數據經過處理之后限定到一定的范圍之內,一般都會將數據限定在[0,1]。數據歸一化可以加快算法的收斂速度,而且在后續的數據處理上也會比較方便。
  2. 數據歸一化的重要性
    1. 數據歸一化是機器學習中非常重要的一步,也稱為特征縮放
    2. 歸一化的目的是使數據在不同特征之間具有相同的尺度,以便更好地進行分類或其他機器學習任務。
  3. 另外,歸一化算法是一種去量綱的行為,關于量綱對于計算的影響可以舉這樣一個例子:使用腫瘤大小(厘米)和發現時間(天)作為特征進行分類。
    在這里插入圖片描述
    未歸一化時,距離計算主要受發現時間影響,因為時間單位的差異導致數據尺度不同。通過調整時間單位為年,可以使得距離計算更準確地反映腫瘤大小的重要性。歸一化的作用就是去除這樣的量綱給計算帶來的影響。

三、數據歸一化實現方法

3.1 最值歸一化方法

  1. 最值歸一化將數據映射到0到1之間。
  2. 方法:對每個特征求最大值和最小值,然后使用公式(x - xmin) / (xmax - xmin)進行轉換。
    在這里插入圖片描述
  3. 適用于數據分布有明確邊界的情況,如考試成績像素值
  4. 缺點:對異常值敏感,可能影響歸一化結果。
  5. 注意事項
    在執行歸一化的算法時有一個地方需要注意,因為公式 y=(x-MinValue)/(MaxValueMinValue)的分母是 MaxValue-MinValue,如果某一個字段的最大值和最小值是相同的,會出現分母為零的情況。所以對于字段數據全部相同的情況要加以判斷,通常來講如果當前字段全部相等且為非零數值,就轉換為 1 來處理。如果當前字段全部數值都是 0,那就直接保留 0。
  6. 最值歸一化的實現
    • 整型向量數據的歸一化代碼

      import numpy as np
      # 隨機生成向量,其中每個向量的數值是0-100,生成100個
      x = np.random.randint(0,100,size=100)
      # 根據最值歸一化公式,實現Int類型數據的歸一化
      # 實現最值歸一化公式,返回結果是一個向量,其中每一個元素的值就處于[0,1]之間
      (x - np.min(x)) / (np.max(x) - np.min(x))
      

      在jupyter中執行結果:
      在這里插入圖片描述

    • 浮點型矩陣數據的歸一化代碼

      # 生成50x2的矩陣,其中數值都在0-100之間
      X = np.random.randint(0,100,(50,2))
      # 將整型的矩陣轉成浮點型矩陣
      X = np.array(X,dtype=float)
      # 將X矩陣數據進行最值歸一化,由于矩陣的列數是2列,因此分別需要對矩陣的每一列進行最值歸一化處理,如有多列,則使用循環即可
      for col in range(0,2):# 對X中每列進行最值歸一化X[:,col] = (X[:,col] - np.min(X[:,col])) / (np.max(X[:,col]) - np.min(X[:,col]))
      # 可以將X矩陣歸一化之后的數據繪制出來,驗證其中每列數值是否處于[0,1]之間
      import matplotlib.pyplot as plt
      plt.scatter(X[:,0],X[:,1])
      plt.show()
      

      執行結果:
      在這里插入圖片描述
      此時,可以看出圖中橫縱坐標的數值處于[0,1]之間,說明X矩陣的數據已經完成了最值歸一化。

    • 查看X矩陣中的均值和方差

      # 查看X矩陣方差
      [(np.std(X[:,col])) for col in range(0,2)]
      # 查看X矩陣方差
      [(np.std(X[:,col])) for col in range(0,2)]
      

      執行結果:
      在這里插入圖片描述

3.2 均值方差歸一化方法

  1. 均值方差歸一化將數據轉換為均值為0,方差為1的分布。

  2. 方法:用每個特征減去均值,再除以方差。
    在這里插入圖片描述
    S為方差,Xmean為均值。

  3. 適用于數據分布沒有明確邊界的情況,如收入分布。

  4. 優點:不受異常值影響,使數據分布更加合理。

  5. 代碼實現過

    • 實現步驟及效果:

      • 生成隨機矩陣并進行均值方差歸一化。
      • 步驟:求均值和方差,減去均值,再除以方差。
      • 結果矩陣中的元素不保證在0到1之間,但均值為0,方差為1。
    • 編寫代碼

      X = np.random.randint(0,100,(50,2))
      X = np.array(X,dtype=float)
      # 根據均值方差歸一化公式,實現X矩陣的均值方差歸一化實現代碼
      for col in range(0,2):X[:,col] = (X[:,col] - np.mean(X[:,col])) / np.std(X[:,col])
      # 繪制圖像查看效果
      plt.scatter(X[:,0],X[:,1])
      plt.show()
      

      執行效果:
      在這里插入圖片描述

    • 查看X矩陣中的均值和方差是否接近或等于0和1:

      • 查看X矩陣的每列數據的均值是否接近或等于0

        # 通過圖像查看并不是很直觀,因此,我們查看X矩陣的每列數據的均值是否接近或等于0
        [(np.mean(X[:,col])) for col in range(0,2)]
        

        執行結果:
        在這里插入圖片描述

        浮點數精度限制:計算機在存儲和處理浮點數時存在精度限制。不同編程語言和系統對于浮點數的表示遵循 IEEE 754 標準,常見的單精度浮點數(float)通常有大約 7 位十進制有效數字,雙精度浮點數(double)大約有 15 - 16 位十進制有效數字。當一個數的絕對值小于計算機所能表示的最小非零浮點數時,就可能會出現下溢情況,計算機可能會將其當作 0 處理。不過, -1.3322676295501878e - 17 一般不會出現這種情況,大多數計算機環境能正常表示它。
        實際應用場景的誤差容忍度:在許多實際的計算和應用中,我們會設定一個誤差范圍(也稱為容差)。如果一個數的絕對值小于這個容差,就可以將其當作 0 處理。例如,在數值計算、物理模擬等領域,為了簡化計算或者忽略極小的誤差,常常會這么做。以下是 Python 示例代碼,演示了如何根據容差判斷一個數是否近似為 0:

        num = -1.3322676295501878e-17
        tolerance = 1e-15
        if abs(num) < tolerance:print("在給定容差范圍內,該數近似為 0")
        else:print("該數不等于 0")
        

        在這里插入圖片描述

      • 查看X矩陣的每列數據的方差是否接近或等于1

        # 通過圖像查看并不是很直觀,因此,我們查看X矩陣的每列數據的方差是否接近或等于1
        [(np.std(X[:,col])) for col in range(0,2)]
        

        執行結果:
        在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895085.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895085.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895085.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【AIGC】語言模型的發展歷程:從統計方法到大規模預訓練模型的演化

博客主頁&#xff1a; [小????????] 本文專欄: AIGC | ChatGPT 文章目錄 &#x1f4af;前言&#x1f4af;語言模型的發展歷程&#xff1a;從統計方法到大規模預訓練模型的演化1 統計語言模型&#xff08;Statistical Language Model, SLM&#xff09;&#xff1a;統…

高效知識管理與分類優化指南:從目錄設計到實踐應用

摘要 本文旨在幫助讀者在信息爆炸時代構建高效的知識管理體系&#xff0c;提供了知識收藏目錄、瀏覽器書簽和電腦文件夾的優化分類方案。知識收藏目錄方案包括工作與項目、記錄與日常、知識管理等八大類&#xff0c;具有邊界清晰、擴展靈活、貼合實際場景等優勢。瀏覽器書簽分類…

OpenAI 實戰進階教程 - 第十二節 : 多模態任務開發(文本、圖像、音頻)

適用讀者與目標 適用讀者&#xff1a;已經熟悉基礎的 OpenAI API 調用方式&#xff0c;對文本生成或數據處理有一定經驗的計算機從業人員。目標&#xff1a;在本節中&#xff0c;你將學會如何使用 OpenAI 提供的多模態接口&#xff08;圖像生成、語音轉錄等&#xff09;開發更…

Java面試題2025-JVM

JVM 1.為什么需要JVM&#xff0c;不要JVM可以嗎&#xff1f; 1.JVM可以幫助我們屏蔽底層的操作系統 一次編譯&#xff0c;到處運行 2.JVM可以運行Class文件 2.JDK&#xff0c;JRE以及JVM的關系 3.我們的編譯器到底干了什么事&#xff1f; 僅僅是將我們的 .java 文件轉換成了…

Deepseek的MLA技術原理介紹

DeepSeek的MLA(Multi-head Latent Attention)技術是一種創新的注意力機制,旨在優化Transformer模型的計算效率和內存使用,同時保持模型性能。以下是MLA技術的詳細原理和特點: 1. 核心思想 MLA技術通過低秩聯合壓縮技術,將多個注意力頭的鍵(Key)和值(Value)映射到一…

QML初識

目錄 一、關于QML 二、布局定位和錨點 1.布局定位 2.錨點詳解 三、數據綁定 1.基本概念 2.綁定方法 3.數據模型綁定 四、附加屬性及信號 1.附加屬性 2.信號 一、關于QML QML是Qt框架中的一種聲明式編程語言&#xff0c;用于描述用戶界面的外觀和行為&#xff1b;Qu…

java項目之美妝產品進銷存管理系統的設計與開發源碼(ssm+mysql)

項目簡介 美妝產品進銷存管理系統的設計與開發實現了以下功能&#xff1a; 美妝產品進銷存管理系統的設計與開發的主要使用者分為管理員登錄后修改個人的密碼。產品分類管理中&#xff0c;對公司內的所有產品分類進行錄入&#xff0c;也可以對產品分類進行修改和刪除。產品管…

Python(pymysql包)操作MySQL【增刪改查】

下載pymysql&#xff1a; pip install pymysql 在MySQL中創建數據庫&#xff1a;unicom create database unicom DEFAULT CHARSET utf8 COLLATE utf8_general_ci;use unicom; 在unicom中創建數據表&#xff1a;admin create table admin(id int not null primary key auto_i…

日志2025.2.9

日志2025.2.9 1.增加了敵人揮砍類型 2.增加了敵人的死亡狀態 在敵人身上添加Ragdoll&#xff0c;死后激活布偶模式 public class EnemyRagdoll : MonoBehaviour { private Rigidbody[] rigidbodies; private Collider[] colliders; private void Awake() { rigidbodi…

HTTP無狀態的概念以及對后端服務的設計會產生的影響

HTTP無狀態(Statelessness) 是指每個HTTP請求都是獨立的,服務器不會記住或依賴于前一個請求的任何信息。每次請求的處理都與其他請求沒有直接關系。也就是說,服務器在處理請求時,不會存儲關于客戶端狀態的信息。 一、HTTP無狀態的具體含義 ①每個請求獨立:每個請求包含了…

操作系統—進程與線程

補充知識 PSW程序狀態字寄存器PC程序計數器&#xff1a;存放下一條指令的地址IR指令寄存器&#xff1a;存放當前正在執行的指令通用寄存器&#xff1a;存放其他一些必要信息 進程 進程&#xff1a;進程是進程實體的運行過程&#xff0c;是系統進行資源分配和調度的一個獨立單位…

python:面向對象案例烤雞翅

自助烤雞翅的需求&#xff1a; 1.烤雞翅的時間和對應的狀態&#xff1a; 0-4min :生的 4-7min:半生不熟 7-12min&#xff1a;熟了 12min以上&#xff1a;烤糊了 2.添加調料&#xff1a; 客戶根據自己的需求添加 定義烤雞翅的類、屬性和方法&#xff0c;顯示對象的信息 …

【基于SprintBoot+Mybatis+Mysql】電腦商城項目之上傳頭像和新增收貨地址

&#x1f9f8;安清h&#xff1a;個人主頁 &#x1f3a5;個人專欄&#xff1a;【Spring篇】【計算機網絡】【Mybatis篇】 &#x1f6a6;作者簡介&#xff1a;一個有趣愛睡覺的intp&#xff0c;期待和更多人分享自己所學知識的真誠大學生。 目錄 &#x1f680;1.上傳頭像 -持久…

Windows下ollama詳細安裝指南

文章目錄 1、Windows下ollama詳細安裝指南1.1、ollama介紹1.2、系統要求1.3、下載安裝程序1.4、安裝步驟1.5、驗證安裝1.6、環境變量配置1.7、模型選擇與安裝【deepseek 示例】1.7.1、拉取并運行模型1.7.2、進階使用技巧 1、Windows下ollama詳細安裝指南 1.1、ollama介紹 olla…

10vue3實戰-----實現登錄的基本功能

10vue3實戰-----實現登錄的基本功能 1.基本頁面的搭建2.賬號登錄的驗證規則配置3.點擊登錄按鈕4.表單的校驗5.賬號的登錄邏輯和登錄狀態保存6.定義IAccount對象類型 1.基本頁面的搭建 大概需要搭建成這樣子的頁面: 具體的搭建界面就不多講。各個項目都有自己的登錄界面&#…

RestTemplate Https 證書訪問錯誤

錯誤信息 resttemplate I/O error on GET request for “https://21.24.6.6:9443/authn-api/v5/oauth/token”: java.security.cert.CertificateException: No subject alternative names present; nested exception is javax.net.ssl.SSLHandshakeException: java.security.c…

講人話的理解ai學習原理

通過把各種東西打上分數標簽存起來。ai不花算力是不可能的&#xff0c;需要巨大的算力&#xff0c;需要要大量gpu芯片&#xff0c;如果大大降低成本&#xff0c;就需要蒸餾別人成果&#xff0c;把這些參數偷偷弄過來。 比如”貓睡在石頭上感覺很涼快&#xff0c;很舒服&#x…

【雜談】-文明的量子躍遷:AI時代人類物種的自我重構

文章目錄 文明的量子躍遷&#xff1a;AI時代人類物種的自我重構一、文明基因的雙螺旋進化二、意識矩陣的拓撲重構三、倫理穹頂下的共生協議 文明的量子躍遷&#xff1a;AI時代人類物種的自我重構 在撒哈拉沙漠的巖壁上&#xff0c;史前人類用赭石顏料繪制出羚羊與獵人的身影&a…

vue3 點擊圖標從相冊選擇二維碼圖片,并使用jsqr解析二維碼(含crypto-js加密解密過程)

vue3 點擊圖標從相冊選擇二維碼圖片&#xff0c;并使用jsqr解析二維碼&#xff08;含crypto-js加密解密過程&#xff09; 1.安裝 jsqr 和 crypto-js npm install -d jsqr npm install crypto-js2.在util目錄下新建encryptionHelper.js文件&#xff0c;寫加密解密方法。 // e…

支持多種網絡數據庫格式的自動化轉換工具——VisualXML

一、VisualXML軟件介紹 對于DBC、ARXML……文件的編輯、修改等繁瑣操作&#xff0c;WINDHILL風丘科技開發的總線設計工具——VisualXML&#xff0c;可輕松解決這一問題&#xff0c;提升工作效率。 VisualXML是一個強大且基于Excel表格生成多種網絡數據庫文件的轉換工具&#…