Scikit-learn Python機器學習 - 特征預處理 - 歸一化 (Normalization):MinMaxScaler

鋒哥原創的Scikit-learn Python機器學習視頻教程:

2026版 Scikit-learn Python機器學習 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili

課程介紹

本課程主要講解基于Scikit-learn的Python機器學習知識,包括機器學習概述,特征工程(數據集,特征抽取,特征預處理,特征降維等),分類算法(K-臨近算法,樸素貝葉斯算法,決策樹等),回歸與聚類算法(線性回歸,欠擬合,邏輯回歸與二分類,K-means算法)等。

Scikit-learn Python機器學習 - 特征預處理 - 歸一化 (Normalization):MinMaxScaler

不同特征可能有不同的量綱和范圍(如身高、體重、年齡),歸一化使各特征在相同尺度上進行比較,避免某些特征因數值較大而主導模型。

我們將特征縮放至一個特定的范圍(默認是 [0, 1])。

歸一化(Normalization)公式,也稱為最小-最大歸一化(Min-Max Normalization)

公式含義 這個公式將原始數據 X 從其原始范圍轉換到 [ 0,1] 的范圍內。

公式各部分解釋

工作原理

特點

應用場景 歸一化在機器學習和數據挖掘中非常常用,特別是:

  • 特征縮放,使不同量綱的特征可比較

  • 梯度下降算法中加速收斂

  • 神經網絡中防止梯度消失或爆炸

  • 圖像處理中的像素值標準化

在Scikit-learn中,使用MinMaxScaler進行歸一化操作。在初始化 MinMaxScaler 對象時,最重要的參數是:

  • feature_range: tuple (min, max), 默認=(0, 1)

    • 作用:指定你想要將數據縮放到的目標范圍。

    • 示例:如果想縮放到 [-1, 1],則設置 feature_range=(-1, 1)

我們看一個示例:

import numpy as np
import pandas as pd
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import MinMaxScaler
?
# 創建示例數據,包含不同類型的問題
data = {'age': [25, 30, np.nan, 45, 60, 30, 15], ?# 數值,含缺失值'salary': [50000, 54000, 60000, np.nan, 100000, 40000, 20000], ?# 數值,尺度大,含缺失值'country': ['USA', 'UK', 'China', 'USA', 'India', 'China', 'UK'], ?# 分類型'gender': ['M', 'F', 'F', 'M', 'M', 'F', 'F'] ?# 分類型
}
?
df = pd.DataFrame(data)
print("原始數據:")
print(df)
?
# 策略通常為 mean(均值), median(中位數), most_frequent(眾數), constant(固定值)
imputer = SimpleImputer(strategy='mean')
?
# 我們只對數值列進行填充
numeric_features = ['age', 'salary']
df_numeric = df[numeric_features]
?
# fit 計算用于填充的值(這里是均值),transform 應用填充
imputer.fit(df_numeric)
df[numeric_features] = imputer.transform(df_numeric)
?
print("\n處理缺失值后:")
print(df)
?
minmax_scaler = MinMaxScaler()
?
df_numeric = df[['age', 'salary']]
# 根據數據訓練生成模型
minmax_scaler.fit(df_numeric)
# 根據模型訓練數據
df_normalized = minmax_scaler.transform(df_numeric)
?
print("\n歸一化后的數值特征(范圍[0,1]):")
print(df_normalized)

運行結果:

歸一化后的數值特征(范圍[0,1]):
[[0.22222222 0.375     ][0.33333333 0.425     ][0.42592593 0.5       ][0.66666667 0.425     ][1.         1.        ][0.33333333 0.25      ][0.         0.        ]]

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

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

相關文章

LINUX_Ubunto學習《2》_shell指令學習、gitee

0、前言: 0.1、為什么學習shell腳本 學習Shell(Shell腳本編程)是提升系統管理和開發效率的重要技能,尤其在Linux/Unix環境中作用顯著。Shell是用戶與操作系統內核的接口,學習Shell有助于掌握系統工作原理。shell的核心…

系統安裝與遷移工具,一鍵下載系統并制作U盤啟動盤

大家好,今天想跟大家分享一款非常實用的軟件——Hasleo WinToUSB 下載地址獲取 點擊獲取:WinToUSB啟動盤 打開后的界面; image Windows To Go USB 可以安裝或克隆 Windows 到 USB 設備,作為便攜式 Windows 使用 可以選擇直接用…

日語學習-日語知識點小記-構建基礎-JLPT-N3階段(26):文法+單詞第8回3 復習 +考え方6

日語學習-日語知識點小記-構建基礎-JLPT-N3階段(26):文法單詞第8回3 復習1、前言(1)情況說明(2)工程師的信仰2、知識點1ー V辭書形 + ことができます。2ーこの橋、&am…

AM J BOT | 黃芪穩健骨架樹構建

Astragalus(黃芪屬,豆科,含約 3,400 種)是最大的被子植物屬之一,其多樣化在北半球多個地區的植被形成與生物多樣性格局中扮演了重要角色。然而,由于屬內物種數量龐大、形態復雜且演化歷史可能受到網狀進化的…

if __name__=‘__main__‘的用處

在 Python 中,if __name__ __main__:是一個常見的代碼模式,用于控制模塊的執行行為。它的核心作用是區分模塊是被直接運行還是被導入到其他文件中。作用詳解:?當文件被直接運行時?__name__會被自動設置為 __main__,此時 if塊內…

MySQL慢查詢優化策略

一、問題定位 1、慢查詢日志 -- 查看當前設置 SHOW VARIABLES LIKE slow_query%; ? -- 開啟慢查詢日志(my.cnf永久配置) [mysqld] slow_query_log 1 slow_query_log_file /var/log/mysql/slow.log long_query_time 1 -- 超過1秒的查詢 log_querie…

如何使用 ASP.NET Core 創建基于角色的 Web API

在使用 ASP.NET Core 構建基于角色的 Web API 時,代碼優先方法是一種強大而高效的方法。使用它,我們可以在代碼中定義數據模型和關系,然后自動生成相應的數據庫模式。這會帶來什么?當然是更快的開發周期和更大的靈活性。為什么&am…

無字母數字命令執行

寫在前面 說白了數字還是好構造的,bash的算數拓展! base64命令 這玩意說白了有點雞肋,因為你得知道flag的文件名和位置! base64 flag.php這個會將flag.php里面的內容給base64編碼輸出來。那么如何用無字母數字構造呢? …

AAB包轉apks轉apk

1. 下載bundletool-all-1.17.2.jar(不一定非得1.17.2,可以其他版本) https://github.com/google/bundletool/releases/tag/1.17.2 2. 在aab、keystore、bundletool-all-1.17.2.jar的目錄下,運行指令 java -jar bundletool-all-1…

從零開始:用uv構建并發布一個Python CLI應用,集成CI/CD自動化發布與Docker容器化部署

使用uv構建并發布一個完整的Python CLI應用 概述 初始化項目 編寫應用代碼 定義項目 (`pyproject.toml`) 使用`uv`安裝依賴 本地運行和測試 依賴鎖定 構建 發布 生產環境實踐之CI/CD 創建工作流配置文件 配置GitHub Secrets 創建和推送tag 驗證發布 生產環境實踐之Docker 創建D…

如何在Qt中使用周立功USB轉CAN卡

如何在 Qt 中使用周立功 USB 轉 CAN 卡 文章目錄如何在 Qt 中使用周立功 USB 轉 CAN 卡一、簡介二、準備工作三、使用四、運行效果五、寫在最后?一、簡介 最近在工程中用到了周立功的 USB 轉 CAN 卡,需求是要通過上位機進行通信,因此有了這篇文章。 有…

JavaScript 源碼剖析:從字節碼到執行的奇妙旅程

JavaScript,這門風靡全球的腳本語言,以其靈活性和跨平臺性征服了無數開發者。我們每天都在使用它,但它在后臺是如何工作的?一段看似簡單的JS代碼,在執行之前究竟經歷了哪些“變形記”?今天,讓我…

FPGA—硬件電路一旦上電配置完成,各個功能模塊會并行地持續工作

1.示例代碼參考這段代碼是用 Verilog 編寫的一個 LED 閃爍控制模塊,主要實現了 LED 按一定時間間隔循環移位閃爍的功能。下面詳細解釋其架構組成:模塊定義與端口聲明模塊名為 led_flash,包含三個端口:sys_clk:輸入端口…

從零到上線:Docker、Docker Compose 與 Runtime 安裝部署全指南(含實戰示例與應用場景)

文章目錄一、Docker 安裝1. Ubuntu / Debian(官方倉庫)2. RHEL / CentOS / Rocky / AlmaLinux3. 驗證4. macOS / Windows(Docker Desktop)二、Docker Compose(V2)安裝與基本用法1) 驗證2) 最小示例&#xf…

Java基礎篇02:基本語法

1 注釋 注釋是寫在程序中對代碼進行解釋說明的文字,方便自己和其他人查看,以便理解程序的。注釋分為三種:單行注釋、多行注釋、文檔注釋注釋不影響代碼的執行: 原因是編譯后的文件已經沒有注釋了// 這是單行注釋:。通常…

【SECS/GEM 】SECS/GEM 日志管理相關的消息

明白 ? 在 SECS/GEM 架構里,設備日志(Equipment Logging 主要涉及 事件日志(Event Log)、報警日志(Alarm Log)、配方操作日志(Recipe Log)、以及用戶操作/命令日志。這些日志通過 S…

ragas 框架使用Chat-GLM模型報API 調用參數有誤,請檢查文檔

ragas 框架使用Chat-GLM模型報API 調用參數有誤,請檢查文檔解決方案 from ragas.llms import LangchainLLMWrapper # 點擊LangchainLLMWrapper 進入這個類找到這個方法直接 return 0.1出現問題原因 ChatGLM 不支持設置temperature等于0,默認的值太小了

Kaggle - LLM Science Exam 大模型做科學選擇題

Kaggle - LLM Science Exam Science Exam Simple Approach w/ Model Hub | Kaggle Platypus2-70B with Wikipedia RAG | Kaggle 5個選項只有一個選項正確,目標:回答一個選項序列(只有前三個有效) 輸出正確選項 (可…

貪吃蛇魚小游戲抖音快手微信小程序看廣告流量主開源

核心優勢:為流量主運營者與新手量身打造 1. 為流量主運營者破解成本困局 本地化運行,零服務器成本:數據運行與存儲全程在用戶手機本地完成,無需部署服務器及后臺系統,徹底擺脫服務器租賃、維護等硬性支出,…

PDF Reader 編輯閱讀工具(Mac中文)

原文地址:PDF Reader 編輯閱讀 for Mac v5.2.0 PDF Reader Pro Mac,是一款PDF編輯閱讀,PDF Reader Pro讓您直接在 Mac 上進行PDF文件閱讀、筆記、編輯、轉換、創建PDF、簽署PDFs、填寫PDF Forms表單、設置密碼、合并拆分文件、水印等等&…