機器學習——PCA(主成分分析)降維


PCA(主成分分析)降維詳解

一、什么是 PCA

PCA(Principal Component Analysis,主成分分析)是一種常用的數據降維方法。它通過線性變換將原始的高維數據映射到低維空間,同時盡可能保留原數據的主要信息(即方差信息)。

一句話總結:

PCA 找到數據變化最大的方向,把數據投影到這些方向上,從而減少維度、壓縮數據,同時降低冗余和噪聲。


二、PCA 的主要作用

  1. 數據降維
    減少特征數量,加快模型訓練速度。

  2. 降噪
    去除方差較小、貢獻不大的特征,減少噪聲影響。

  3. 特征提取
    把原特征組合成新的主成分,減少相關性。

  4. 可視化
    將高維數據映射到二維或三維,方便繪圖觀察。


三、PCA 的核心思想

PCA 的核心思想是:

  1. 找到數據方差最大的方向(主成分方向)

  2. 將數據投影到這些方向上

  3. 選擇前 k 個主成分作為新的特征空間

方差越大,表示數據在該方向的變化信息越多,保留它可以最大化信息量。


四、PCA 數學推導(簡化版)

假設數據集為 X(已中心化):

  1. 計算協方差矩陣

  2. 求特征值和特征向量

    • 特征向量 vi?表示主成分方向

    • 特征值 λi 表示方差大小

  3. 按特征值從大到小排序
    取前 k?個特征向量組成投影矩陣 W

  4. 降維


五、PCA 實現步驟

  1. 數據標準化(均值為 0,方差為 1)

  2. 計算協方差矩陣

  3. 求特征值和特征向量

  4. 選擇前 k 個主成分

  5. 將數據投影到新空間


六、PCA 的優缺點

優點

  • 降維有效,速度快

  • 去除冗余特征,減少過擬合

  • 對噪聲有一定抑制作用

缺點

  • 僅適用于線性降維

  • 主成分是特征組合,不易解釋含義

  • 對特征縮放敏感,需要標準化


七、PCA 應用場景

  • 圖像壓縮(如人臉識別中的特征提取)

  • 高維數據可視化(如基因數據、股票數據)

  • 機器學習前的數據預處理


八、PCA() 函數原型和參數表

class sklearn.decomposition.PCA(n_components=None,*,copy=True,whiten=False,svd_solver='auto',tol=0.0,iterated_power='auto',n_oversamples=10,power_iteration_normalizer='auto',random_state=None
)

參數類型 / 取值范圍默認值作用說明
n_componentsint / float / 'mle' / NoneNone- int:降到指定維度- float ∈ (0,1]:保留的累計方差比例(svd_solver='full' 時有效)- 'mle':自動估計最佳維度(svd_solver='full' 時)- None:保留 min(n_samples, n_features) 個主成分
copyboolTrue是否在降維前復制數據,False 則在原數組上執行(可能修改原數據)
whitenboolFalse是否將輸出的主成分縮放為單位方差(去相關+標準化),可能改變原數據的尺度含義
svd_solver'auto' / 'full' / 'arpack' / 'randomized' / 'covariance_eigh''auto'- 'auto':自動選擇- 'full':精確 SVD- 'arpack':截斷 SVD(適合小規模特征子集)- 'randomized':隨機近似 SVD(高維快)- 'covariance_eigh':特征值分解協方差矩陣(樣本?特征時快)
tolfloat0.0SVD 收斂閾值(對迭代方法有效)
iterated_powerint / 'auto''auto'隨機 SVD 的迭代次數(通常保持默認)
n_oversamplesint10隨機 SVD 的過采樣參數(svd_solver='randomized' 時)
power_iteration_normalizer'auto' / 'QR' / 'LU' / None'auto'隨機 SVD 的冪迭代歸一化方式
random_stateint / RandomState / NoneNone隨機種子(svd_solver='randomized' 時保證結果可復現)

九、PCA Python 實戰

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 使用微軟雅黑字體
plt.rcParams['axes.unicode_minus'] = False  # 處理負號顯示異常# 1. 加載數據
iris = load_iris()
X = iris.data
y = iris.target# 2. 創建 PCA 模型(降到 2 維)
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)# 3. 可視化
plt.figure(figsize=(8,6))
for target, color, label in zip([0,1,2], ['r','g','b'], iris.target_names):plt.scatter(X_pca[y == target, 0], X_pca[y == target, 1], c=color, label=label)plt.xlabel('主成分 1')
plt.ylabel('主成分 2')
plt.title('PCA 降維后的鳶尾花數據')
plt.legend()
plt.show()# 4. 方差貢獻率
print("各主成分方差貢獻率:", pca.explained_variance_ratio_)
# 輸出結果:各主成分方差貢獻率: [0.92461872 0.05306648]

輸出示例:

各主成分方差貢獻率: [0.92461872 0.05306648]

說明前兩個主成分保留了約 97.7% 的信息。


十、PCA 可視化原理

PCA 本質上是在找一組新的坐標軸(主成分軸),數據被重新投影到這些軸上,從而實現降維。
在二維圖中,這些主成分軸相當于旋轉后的新坐標系。


十一、總結

  • PCA 是通過最大化方差來提取主要特征的線性降維方法。

  • 核心步驟是計算協方差矩陣求特征值和特征向量投影到主成分。

  • 適合在特征數量大、存在相關性、需要可視化的場景使用。

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

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

相關文章

把 AI 裝進“冰箱貼”——基于超低功耗語音合成的小屏電子價簽

標簽:電子價簽、語音合成、TTS、超低功耗、電子墨水、BLE、離線語音 ---- 1. 背景:價簽也要開口說話? 超市做促銷,顧客拿價簽一掃,“今日番茄 2.99 元/斤,會員再享 9 折” 直接語音播放。 硬件限制&#xf…

挖漏洞是什么意思?挖漏洞賺錢入門到精通,收藏這篇就夠了!

挖漏洞是什么意思?挖漏洞賺錢入門到精通,收藏這篇就夠了! 什么是漏洞挖掘 漏洞挖掘是指通過分析軟件、系統或網絡中存在的安全漏洞來發現并利用這些漏洞。漏洞挖掘是信息安全領域的一項重要工作,可以幫助企業和組織提高系統的安…

如何理解AP中SM中宿主進程?

在AUTOSAR Adaptive Platform(AP)中,狀態管理(State Management, SM)的宿主進程(Host Process) 是實現狀態機運行的核心載體,其本質與運作機制可通過以下結構化解析深入理解&#xf…

無人機光電探測模塊技術分析

一、技術要點1. 多光譜成像技術 可見光與紅外融合:白天依賴可見光高分辨率成像(識別外形、顏色),夜間或低光照條件下切換至紅外熱成像(捕捉0.5℃級溫差),通過雙波段互補提升全天候能力。 激光…

第40周——GAN入門

目錄 目錄 目錄 前言 一、定義超參數 二、下載數據 三、配置數據 四、定義鑒別器 五、訓練模型并保存 總結 前言 🍨 本文為🔗365天深度學習訓練營中的學習記錄博客🍖 原作者:K同學啊 一、定義超參數 import argparse import os i…

Nginx性能優化與安全配置:打造高性能Web服務器

系列文章索引: 第一篇:《Nginx入門與安裝詳解:從零開始搭建高性能Web服務器》第二篇:《Nginx基礎配置詳解:nginx.conf核心配置與虛擬主機實戰》第三篇:《Nginx代理配置詳解:正向代理與反向代理…

二分算法(模板)

例題1: 704. 二分查找 - 力扣(LeetCode) 算法原理:(二分) 通過遍歷也可以通過,但是二分更優且數據量越大越能體現。 二分思路: 1.mid1 (left right)/2 與 mid2 right (right …

VUE3 學習筆記2 computed、watch、生命周期、hooks、其他組合式API

computed 計算屬性在vue3中,雖然也能寫vue2的computed,但還是更推薦使用vue3語法的computed。在Vue3中,計算屬性是組合式API,要想使用computed,需要先對computed進行引入:import { computed } from vuecomp…

【java面試day13】mysql-定位慢查詢

文章目錄問題💬 Question 1相關知識問題 💬 Question 1 Q:這條sql語句執行很慢,你如何分析呢? A:當一條 SQL 執行較慢時,可以先使用 EXPLAIN 查看執行計劃,通過 key 和 key_len 判…

3分鐘解鎖網頁“硬盤“能力:離線運行VSCode的新一代Web存儲技術

Hi,我是前端人類學(之前叫布蘭妮甜)! “這不是瀏覽器,這是裝了個硬盤。” —— 用戶對現代Web應用能力的驚嘆 隨著Origin Private File System和IndexedDB Stream等新技術的出現,Web應用現在可以在用戶的設…

LT6911GXD,HD-DVI2.1/DP1.4a/Type-C 轉 Dual-port MIPI/LVDS with Audio 帶音頻

簡介LT6911GXD是一款高性能HD-DVI2.1/DP1.4a/Type-c轉Dual-port MIPI/LVDS芯片,兼容 HDMI2.1、HDMI2.0b、HDMI1.4、DVI1.0、DisplayPort 1.4a、eDP1.4b 等多種視頻接口標準。支持4K(38402160)60Hz的DSC直通。應用場景AR/VR設備LT6911GXD 支持高達 4K(384…

【100頁PPT】數字化轉型某著名企業集團信息化頂層規劃方案(附下載方式)

篇幅所限,本文只提供部分資料內容,完整資料請看下面鏈接 https://download.csdn.net/download/2501_92808811/91662628 資料解讀:數字化轉型某著名企業集團信息化頂層規劃方案 詳細資料請看本解讀文章的最后內容 作為企業數字化轉型領域的…

高精度標準鋼卷尺優質廠家、選購建議

高精度標準鋼卷尺的優質廠家通常具備精湛工藝與權威精度認證等特征,能為產品質量提供保障。其選購需兼顧精度標識、使用場景、結構細節等多方面,具體介紹如下:一、高精度標準鋼卷尺優質廠家**1、河南普天同創:**PTTC-C5標準鋼卷尺…

38 C++ STL模板庫7-迭代器

C STL模板庫7-迭代器 文章目錄C STL模板庫7-迭代器一、迭代器的核心作用二、迭代器的五大分類與操作三、關鍵用法與代碼示例1. 迭代器的原理2. 迭代器用法與示例3. 迭代工具用法示例4. 使用技巧迭代器是C中連接容器與算法的通用接口,提供了一種訪問容器元素的統一方…

【0基礎3ds Max】學習計劃

3ds Max 作為一款功能強大的專業 3D 計算機圖形軟件,在影視動畫、游戲開發、建筑可視化、產品設計和工業設計等眾多領域有著廣泛的應用。 目錄前言一、第一階段:基礎認知(第 1 - 2 周)?二、第二階段:建模技術學習&…

用 Enigma Virtual Box 將 Qt 程序打包成單 exe

上一篇介紹了用windeployqt生成可運行的多文件程序,但一堆文件分發起來不夠方便。有沒有辦法將所有文件合并成一個 exe? 答案是肯定的 用Enigma Virtual Box工具就能實現。本文就來講解如何用它將 Qt 多文件程序打包為單一 exe,讓分發更輕松。 其中的 一定要選 第二個 一…

【LeetCode 熱題 100】45. 跳躍游戲 II

Problem: 45. 跳躍游戲 II 給定一個長度為 n 的 0 索引整數數組 nums。初始位置為 nums[0]。 每個元素 nums[i] 表示從索引 i 向后跳轉的最大長度。換句話說&#xff0c;如果你在索引 i 處&#xff0c;你可以跳轉到任意 (i j) 處&#xff1a; 0 < j < nums[i] 且 i j &…

池式管理之線程池

1.初識線程池問&#xff1a;線程池是什么&#xff1f;答&#xff1a;維持管理一定數量的線程的池式結構。&#xff08;維持&#xff1a;線程復用 。 管理&#xff1a;沒有收到任務的線程處于阻塞休眠狀態不參與cpu調度 。一定數量&#xff1a;數量太多的線程會給操作系統帶來線…

嬰兒 3D 安睡系統專利拆解:搭扣與智能系帶的鎖定機制及松緊調節原理

凌晨2點&#xff0c;你盯著嬰兒床里的小肉團直嘆氣。剛用襁褓裹成小粽子才哄睡的寶寶&#xff0c;才半小時就蹬開了裹布&#xff0c;小胳膊支棱得像只小考拉&#xff1b;你手忙腳亂想重新裹緊&#xff0c;結果越裹越松&#xff0c;裹布滑到脖子邊&#xff0c;寶寶突然一個翻身&…

pandas中df.to _dict(orient=‘records‘)方法的作用和場景說明

df.to _dict(orientrecords) 是 Pandas DataFrame 的一個方法&#xff0c;用于將數據轉換為字典列表格式。以下是詳細解釋及實例說明&#xff1a; 一、核心含義作用 將 DataFrame 的每一行轉換為一個字典&#xff0c;所有字典組成一個列表。 每個字典的鍵&#xff08;key&#…