【漫話機器學習系列】168.最大最小值縮放(Min-Max Scaling)

在機器學習和數據預處理中,特征縮放(Feature Scaling) 是一個至關重要的步驟,它可以使模型更穩定,提高訓練速度,并優化收斂效果。最大最小值縮放(Min-Max Scaling) 是其中最常見的方法之一,它可以將特征值變換到一個固定范圍(通常是 [0,1])。本文將詳細介紹 Min-Max Scaling 的數學公式、適用場景、優缺點以及如何在 Python 中實現它。


1. 什么是 Min-Max Scaling?

Min-Max Scaling,也稱為歸一化(Normalization),是一種線性變換方法,用于將數據的數值縮放到特定范圍(通常是 [0,1]?或 [-1,1])。其核心思想是保持數據的相對大小,但將其拉伸或壓縮到目標范圍。

公式如下:

X_i' = \frac{X_i - \min(X)}{\max(X) - \min(X)}

其中:

  • X_i' 是歸一化后的數據,

  • X_i 是原始數據,

  • min?(X)?是特征中的最小值,

  • max?(X)?是特征中的最大值。

這樣變換后,所有數據點都會被映射到 [0,1]?之間。


2. Min-Max Scaling 的數學原理

(1)線性變換

Min-Max Scaling 通過線性變換,使數據按照比例縮放到指定范圍。設原始數據集 X?在 [X_{\min}, X_{\max}] 之間,而我們希望轉換后的數據在 [a, b]?之間(通常是 [0,1]),那么變換公式為:

X_i' = a + \frac{(X_i - X_{\min}) (b - a)}{X_{\max} - X_{\min}}

當 a=0?且 b=1?時,就得到了標準的 Min-Max Scaling 公式。

(2)如何映射數據

  • X_i = X_{\min}? 時,X_i' = 0

  • X_i = X_{\max}? 時,X_i' = 1

  • 介于最小值和最大值之間的數據,按比例映射到 [0,1]?內。

這種變換不會改變數據的分布形態,但會影響數據的范圍。


3. Min-Max Scaling 的優缺點

優點

  1. 保持原始數據的分布形態:不會改變數據的相對大小,適用于已經有界的數據,如年齡(通常在 0 到 100 之間)。

  2. 適用于數據范圍已知的情況:如圖像數據(像素值通常在 0 到 255 之間),轉換后數據會處于統一的區間,有助于模型收斂。

  3. 計算簡單,易于實現:只需要計算最小值和最大值,進行一次線性變換即可。

缺點

  1. 對異常值(Outliers)敏感:如果數據中存在異常值(如極端大或極端小的值),它們會影響最大值和最小值,從而影響所有數據的縮放。

  2. 依賴于數據范圍:如果數據范圍發生變化(如在不同批次數據上應用 Min-Max Scaling),那么縮放后的數據可能不一致。


4. 適用場景

Min-Max Scaling 適用于:

  • 神經網絡:神經網絡的輸入通常需要歸一化到 [0,1]?或 [-1,1],Min-Max Scaling 是常用的預處理方法。

  • K 近鄰(KNN)和支持向量機(SVM):這些模型依賴于距離計算,數據縮放有助于提高模型性能。

  • 圖像處理:圖像像素值通常位于 [0, 255],縮放到 [0,1]?有助于提高模型穩定性。

不適用于:

  • 具有異常值的數據集:可以考慮使用 RobustScaler標準化(Standardization) 方法。


5. 在 Python 中實現 Min-Max Scaling

在 Python 中,可以使用 sklearn.preprocessing.MinMaxScaler 輕松實現 Min-Max Scaling:

(1)使用 Scikit-Learn

from sklearn.preprocessing import MinMaxScaler
import numpy as np# 示例數據
data = np.array([[10], [20], [30], [40], [50]])# 創建 MinMaxScaler,默認縮放到 [0,1]
scaler = MinMaxScaler()# 進行歸一化
scaled_data = scaler.fit_transform(data)print(scaled_data)

?運行結果

[[0.  ][0.25][0.5 ][0.75][1.  ]]

(2)手動實現 Min-Max Scaling

如果不使用 sklearn,可以手動計算:

import numpy as npdef min_max_scaling(data):min_val = np.min(data)max_val = np.max(data)return (data - min_val) / (max_val - min_val)data = np.array([10, 20, 30, 40, 50])
scaled_data = min_max_scaling(data)
print(scaled_data)

運行結果?

[0.   0.25 0.5  0.75 1.  ]


6. Min-Max Scaling vs. Z-Score 標準化

Min-Max Scaling 與 Z-Score 標準化(Standardization) 是兩種常見的特征縮放方法,它們的主要區別如下:

特性Min-Max ScalingZ-Score 標準化
公式X' = \frac{X - X_{\min}}{X_{\max} - X_{\min}}X' = \frac{X - \mu}{\sigma}
結果范圍[0,1](或指定范圍)無固定范圍,均值 0,標準差 1
適用場景適用于已知范圍的數據適用于正態分布數據
對異常值的影響受異常值影響大受異常值影響小

當數據包含異常值時,通常更適合使用 Z-Score 標準化(即均值歸一化)。


7. 總結

Min-Max Scaling 是一種常用的特征縮放方法,它可以將數據縮放到固定范圍(如 [0,1]),使模型更穩定、訓練更快。它適用于范圍已知的數據,但對異常值敏感,因此在使用時需要考慮數據的分布特性。

核心要點

Min-Max Scaling 通過線性變換將數據縮放到 [0,1]。
適用于神經網絡、KNN、SVM 和圖像處理等場景。
對異常值敏感,若數據存在異常值,可考慮其他方法。
在 Python 中可使用 sklearn.preprocessing.MinMaxScaler 輕松實現。

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

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

相關文章

開源測試用例管理平臺

不可錯過的10個開源測試用例管理平臺: PingCode、TestLink、Kiwi TCMS、Squash TM、FitNesse、Tuleap、Robot Framework、SpecFlow、TestMaster、Nitrate。 開源測試用例管理工具提供了一種透明、靈活的解決方案,使團隊能夠在不受限的情況下適應具體的測…

鴻蒙闊折疊Pura X外屏開發適配

首先看下鴻蒙中斷點分類 內外屏開合規則 Pura X開合連續規則: 外屏切換到內屏,界面可以直接接續。內屏(鎖屏或非鎖屏狀態)切換到外屏,默認都顯示為鎖屏的亮屏狀態。用戶解鎖后:對于應用已適配外屏的情況下,應用界面可以接續到外屏。折疊外屏顯示展開內屏顯示折疊狀態…

DRM_CLIENT_CAP_UNIVERSAL_PLANES和DRM_CLIENT_CAP_ATOMIC

drmSetClientCap(fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1); drmSetClientCap(fd, DRM_CLIENT_CAP_ATOMIC, 1); 這兩行代碼用于啟用 Linux DRM(Direct Rendering Manager)客戶端的兩個關鍵特性,具體作用如下: 1. drmSetClientCap…

敏捷開發10:精益軟件開發和看板kanban開發方法的區別是什么

簡介 精益生產起源于豐田生產系統,核心是消除浪費,而看板最初是由豐田用于物料管理的信號卡片,后來被引入軟件開發。 Kanban 后來引入到敏捷開發中,強調持續交付和流程可視化。 精益軟件開發原則是基于精益生產的原則&#xff0…

用matlab探索卷積神經網絡(Convolutional Neural Networks)-3

5.GoogLeNet中的Filters 這里我們探索GoogLeNet中的Filters,首先你需要安裝GoogLeNet.在Matlab的APPS里找到Deep Network Designer,然后找到GoogLeNet,安裝后的網絡是沒有右下角的黃色感嘆號的,沒有安裝的神經網絡都有黃色感嘆號。 一個層&a…

Verilog中X態的危險:仿真漏掉的bug

由于Verilog中X態的微妙語義,RTL仿真可能PASS,而網表仿真卻會fail。 目前進行的網表仿真越來越少,這個問題尤其嚴重,主要是網表仿真比RTL仿真慢得多,因此對整個回歸測試而言成本效益不高。 上面的例子中,用Verilog RTL中的case語句描述了一個簡單的AND函數,它被綜合成AN…

PyTorch中知識蒸餾淺講

知識蒸餾 在 PyTorch 中,使用 teacher_model.eval() 和凍結教師模型參數是知識蒸餾(Knowledge Distillation)中的關鍵步驟。 ?1. teacher_model.eval() 的作用 目的: 將教師模型切換到評估模式,影響某些特定層(如 Dropout、BatchNorm)的行為。 ?具體影響: ?Dropo…

Odoo/OpenERP 和 psql 命令行的快速參考總結

Odoo/OpenERP 和 psql 命令行的快速參考總結 psql 命令行選項 選項意義-a從腳本中響應所有輸入-A取消表數據輸出的對齊模式-c <查詢>僅運行一個簡單的查詢&#xff0c;然后退出-d <數據庫名>指定連接的數據庫名&#xff08;默認為當前登錄用戶名&#xff09;-e回顯…

ChatGPT 迎來 4o模型:更強大的圖像生成能力與潛在風險

OpenAI 對 ChatGPT 進行重大升級&#xff0c;圖像生成功能即將迎來新的 4o 模型&#xff0c;并取代原本的 DALLE。此次更新不僅提升了圖像生成質量&#xff0c;還增強了對話內容和上傳文件的融合能力&#xff0c;使 AI 生成的圖像更加智能化和精準化。 4o 模型帶來的革新 Ope…

Python 實現的運籌優化系統代碼詳解(整數規劃問題)

一、引言 在數學建模的廣袤領域里&#xff0c;整數規劃問題占據著極為重要的地位。它廣泛應用于工業生產、資源分配、項目管理等諸多實際場景&#xff0c;旨在尋求在一系列約束條件下&#xff0c;使目標函數達到最優&#xff08;最大或最小&#xff09;且決策變量取整數值的解決…

Visual Studio Code配置自動規范代碼格式

目錄 前言1. 插件安裝2. 配置個性化設置2.1 在左下角點擊設置按鈕 &#xff0c;點擊命令面板&#xff08;或者也可以之間按快捷鍵CtrlShiftP&#xff09;2.2 在彈出的搜索框輸入 settings.json&#xff0c;打開首選項&#xff1a;打開工作區設置&#xff1b;2.3 在settings.jso…

【分布式】Hystrix 的核心概念與工作原理?

熔斷機制? Hystrix 的熔斷機制就像是電路中的保險絲。當某個服務的失敗請求達到一定比例&#xff08;例如 50%&#xff09;或者在一定時間內&#xff08;如 20 秒&#xff09;失敗請求數量超過一定閾值&#xff08;如 20 個&#xff09;時&#xff0c;熔斷開關就會打開。此時…

TypeScript 中 await 的詳解

TypeScript 中 await 的詳解 1. 基本概念2. 語法要求3. 工作原理4. 與 Promise 的比較5. 實踐中的注意事項總結 本文詳細介紹了 TypeScript 中 await 的工作原理、語法要求、與 Promise 的關系以及實踐中需要注意的問題&#xff0c;同時針對代碼示例進行了優化和補充說明。 1.…

ThreadLocal 深度解析

一、引言 在多線程編程的復雜世界中&#xff0c;數據共享與隔離是一個核心且具有挑戰性的問題。ThreadLocal 作為 Java 并發包中的重要工具&#xff0c;為我們提供了一種獨特的線程局部變量管理方式&#xff0c;使得每個線程都能擁有自己獨立的變量副本&#xff0c;避免了多線…

VMware安裝Ubuntu實戰分享

在日常開發和學習過程中&#xff0c;很多人都會選擇在VMware虛擬機上安裝Ubuntu&#xff0c;以便進行Linux環境的體驗和開發調試。本文將詳細分享在VMware Workstation上安裝Ubuntu的全過程&#xff0c;并結合個人經驗&#xff0c;提供一些實用的小技巧&#xff0c;幫助大家順利…

阻止上傳可執行程序

點擊工具中的文件服務器資源管理器 、然后點擊文件屏蔽管理中的文件屏蔽&#xff0c;然后導入目標文件選擇要限制的屬性即可

微服務面試題:配置中心

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家&#xff0c;歷代文學網&#xff08;PC端可以訪問&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移動端可微信小程序搜索“歷代文學”&#xff09;總架構師&#xff0c;15年工作經驗&#xff0c;精通Java編…

系統思考反饋

最近交付的都是一些持續性的項目&#xff0c;越來越感覺到&#xff0c;系統思考和第五項修煉不只是簡單的一門課程&#xff0c;它們能真正融入到我們的日常工作和業務中&#xff0c;幫助我們用更清晰的思維方式解決復雜問題&#xff0c;推動團隊協作&#xff0c;激發創新。 特…

MMD 轉 STL,拓寬 3D 模型應用邊界:方法與門道

在 3D 建模與打印領域&#xff0c;不同格式文件間的轉換是常見需求。MMD&#xff08;MikuMikuDance&#xff09;模型文件格式常用于動漫角色的舞蹈創作等&#xff0c;而 STL&#xff08;Stereolithography&#xff09;格式則廣泛應用于 3D 打印與計算機輔助設計&#xff08;CAD…

C語言 【初始指針】【指針一】

引言 思緒很久&#xff0c;還是決定寫一寫指針&#xff0c;指針這塊內容很多&#xff0c;也不是那么容易說清楚&#xff0c;這里盡可能寫地詳細&#xff0c;讓大家理解指針。&#xff08;未完序&#xff09; 一、內存和地址 在講指針前&#xff0c;需要有一個對內存和地址的認…