機器學習----PCA降維

一、PCA是什么?

主成分分析(Principal Component Analysis,PCA)是機器學習中最常用的降維技術之一,它通過線性變換將高維數據投影到低維空間,同時保留數據的最重要特征。PCA由卡爾·皮爾遜于1901年發明,如今廣泛應用于數據可視化、特征提取和噪聲過濾等領域。

二、PCA的數學原理

1.1 向量與內積

PCA的核心建立在向量運算基礎上。給定兩個n維向量:

它們的??內積??定義為:

A?B=a1?b1?+a2?b2?+?+an?bn?=∣A∣∣B∣cos(θ)

其中θ是兩向量夾角,|A|表示向量模長:

幾何意義??:當|B|=1時,A·B表示A在B方向上的投影長度。

1.2 基與基變換

在n維空間中,??基??是一組線性無關的向量,任何向量都可表示為基的線性組合。標準正交基滿足:

  • 每個基向量模長為1
  • 任意兩個不同基向量正交(內積為0)

??基變換公式??:設舊基為e1?,e2?,...,en?,新基為p1?,p2?,...,pn?,向量v在新基下的坐標為:

其中P的行向量由新基向量組成。

2.1 優化目標

給定m個n維數據點X=[x1?,x2?,...,xm?],PCA尋找k維(k<n)子空間,使得:

1.?最大方差準則??:投影后數據方差最大化

? ? ? ? ? ? ??

2.最小重構誤差??:重構數據與原數據誤差最小化

? ? ? ? ? ? ? ? ? ? ? ??

這兩個目標實際上是等價的。

2.2 協方差矩陣

數據經過中心化處理后(均值為0),協方差矩陣為:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

其元素Cij?表示第i維和第j維特征的協方差:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

2.3 特征值分解

PCA的關鍵是對協方差矩陣C進行特征值分解:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

其中:

  • ?

    Λ是對角矩陣,對角元素λ? ≥ λ? ≥ ... ≥ λ?為特征值

  • ?

    P的列向量是對應的特征向量,構成新的正交基

??方差解釋??:第i個主成分的方差等于λ?,總方差為∑i=1n?λi?

2.4 降維過程

選擇前k個最大特征值對應的特征向量組成投影矩陣Pk?,降維數據:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

重構數據:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

3. PCA算法步驟

3.1 理論步驟

  1. 數據標準化??:每維特征減去均值

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

2.計算協方差矩陣??:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

3.特征值分解??:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

4.??選擇主成分??:按特征值從大到小排序,選擇前k個

5.??數據投影??:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

3.2 數值穩定性考慮

實際計算中,常使用??奇異值分解(SVD)??代替特征值分解:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

此時:

右奇異矩陣V的列向量即為主成分方向

奇異值σ?與特征值關系:λi?=σi2?/m

三、PCA代碼

1. PCA的Python實現

1.1 數據準備

import numpy as np
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt# 加載鳶尾花數據集
iris = load_iris()
X = iris.data
y = iris.target# 數據標準化
X_centered = X - X.mean(axis=0)

1.2 使用scikit-learn實現PCA

from sklearn.decomposition import PCApca = PCA(n_components=2)
X_pca = pca.fit_transform(X)print("解釋方差比:", pca.explained_variance_ratio_)
print("累計解釋方差:", np.cumsum(pca.explained_variance_ratio_))

2.項目實戰

. 項目概述

本項目使用PCA(主成分分析)對鳶尾花數據集進行降維處理,然后使用邏輯回歸進行分類,并比較降維前后的分類效果。

2. 代碼實現與分析

2.1 數據準備與PCA降維

from sklearn.decomposition import PCA
import pandas as pd# 數據讀取
data = pd.read_excel(".\hua.xlsx")# 數據劃分
X = data.iloc[:,:-1]  # 特征
y = data.iloc[:,-1]   # 標簽# PCA實例化與訓練
pca = PCA(n_components=0.90)  # 保留90%的方差
pca.fit(X)  # 訓練PCA模型# 輸出PCA結果
print('特征所占百分比:{}'.format(sum(pca.explained_variance_ratio_)))
print(pca.explained_variance_ratio_) # 數據降維
new_x = pca.transform(X)
print('PCA降維后數據:')
print(new_x)

2.2 數據分割與模型訓練

from sklearn.model_selection import train_test_split# 數據分割
x_train, x_test, y_train, y_test = train_test_split(new_x, y, test_size=0.2, random_state=0)# 邏輯回歸模型
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()
classifier.fit(x_train, y_train)# 預測
train_pred = classifier.predict(x_train)
test_pred = classifier.predict(x_test)print("訓練集預測結果:", train_pred)
print("測試集預測結果:", test_pred)

2.3 評估指標

from sklearn.metrics import classification_report# 訓練集評估
print("訓練集分類報告:")
print(classification_report(y_train, train_pred))# 測試集評估
print("測試集分類報告:")
print(classification_report(y_test, test_pred))

3. PCA原理回顧

PCA(主成分分析)是一種常用的降維方法,其核心思想是通過線性變換將高維數據投影到低維空間,同時保留盡可能多的原始數據信息。

3.1 PCA關鍵步驟

1.??數據標準化??:將每個特征減去其均值

2.??計算協方差矩陣??:反映特征間的相關性

3.??特征值分解??:獲取特征值和特征向量

4.?選擇主成分??:按特征值大小排序,選擇前k個

5.??數據轉換??:將原始數據投影到主成分空間

3.2 數學原理

PCA的核心數學操作是協方差矩陣的特征分解:

通過找到矩陣P使得:

是一個對角矩陣,且對角元素按從大到小排列。

4. 結果分析與比較

4.1 降維前后模型性能比較

我們可以比較使用PCA降維前后模型的性能差異:

# 不降維的模型
x_train_raw, x_test_raw, y_train_raw, y_test_raw = train_test_split(X, y, test_size=0.2, random_state=0)classifier_raw = LogisticRegression()
classifier_raw.fit(x_train_raw, y_train_raw)raw_train_pred = classifier_raw.predict(x_train_raw)
raw_test_pred = classifier_raw.predict(x_test_raw)print("原始數據訓練集分類報告:")
print(classification_report(y_train_raw, raw_train_pred))
print("原始數據測試集分類報告:")
print(classification_report(y_test_raw, raw_test_pred))

4.2 分析結論

  1. ?降維效果??:PCA可以有效減少特征維度,同時保留大部分信息
  2. 模型性能??:對于不同數據集,PCA可能提高或降低模型性能

    • 大數據集:PCA可以提高計算效率,可能提升性能

    • 小數據集:PCA可能丟失重要信息,降低性能

  3. ??實際應用??:需要根據具體數據集和任務需求決定是否使用PCA

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

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

相關文章

ReactNative開發實戰——React Native開發環境配置指南

一、開發前準備 1. macOS平臺基礎工具安裝 brew install node18 brew install watchman brew install cocoapods2. 代理配置 npm config set proxy http://127.0.0.1:7890 npm config set https-proxy http://127.0.0.1:7890# 新增擴展建議&#xff08;可選配置&#xff09; ec…

差速轉向機器人研發:創新驅動的未來移動技術探索

在科技日新月異的今天&#xff0c;機器人技術作為智能制造與自動化領域的核心驅動力&#xff0c;正以前所未有的速度發展。其中&#xff0c;差速轉向機器人以其獨特的運動機制和廣泛的應用前景&#xff0c;成為了科研與工業界關注的焦點。本文旨在探討差速轉向機器人研發進展&a…

Wireshark捕獲電腦與路由器通信數據,繪制波形觀察

一、準備工作 電腦發出數據的波形圖繪制在我的另一篇博客有詳細介紹&#xff1a; 根據Wireshark捕獲數據包時間和長度繪制電腦發射信號波形-CSDN博客 路由器發送給電腦數據的波形圖繪制也在我的另一篇博客有詳細介紹&#xff1a; 根據Wireshark捕獲數據包時間和長度繪制路由…

汽車ECU實現數據安全存儲(機密性保護)的一種方案

一、 綜述在車輛ECU中總是有一些密鑰或重要數據需進行機密性保護&#xff0c;但因產品選型、成本等考慮&#xff0c;導致一些ECU的芯片不支持硬件安全模塊&#xff08;例如HSM、TEE等&#xff09;。此時&#xff0c;為保障數據的機密性&#xff0c;可考慮通過軟件實現數據的安全…

AI 效應: GPT-6,“用戶真正想要的是記憶”

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

云計算學習100天-第25天

部署LNMP環境安裝軟件#在前一天已經安裝nginx的基礎上安裝MariaDB&#xff0c;php和php-fpm yum -y install mariadb mariadb-server mariadb-devel php php-mysqlnd php-fpm #mariadb&#xff08;數據庫客戶端軟件&#xff09;、mariadb-server&#xff08;數據庫服務器軟件&…

細化的 Spring Boot 和 Spring Framework 版本對應關系

注:本文由ai輔助,個人整理,有問題可留言 Spring Boot 3.x 系列 (基于 Spring Framework 6.x) Spring Boot 版本 對應的 Spring Framework 版本 Java 支持版本 3.1.5 (最新) 6.0.15 Java 17+ 3.1.4 6.0.14 Java 17+ 3.1.3 6.0.12 Java 17+ 3.1.2 6.0.11 Java 17+ 3.1.1 6.0.…

PyTorch API 1

文章目錄torch張量創建操作索引、切片、連接與變異操作加速器生成器隨機采樣原地隨機采樣準隨機采樣序列化并行計算局部禁用梯度計算數學運算常量逐點運算歸約操作比較運算頻譜操作其他操作BLAS 和 LAPACK 運算遍歷操作實用工具符號數字導出路徑控制流優化方法操作符標簽torch.…

基于FPGA的實時圖像處理系統(2)——VGA顯示彩條和圖片

VGA顯示彩條和圖片 文章目錄VGA顯示彩條和圖片一、VGA簡介二、功能設計1、彩條設計2、圖片設計三、結果展示四、代碼一、VGA簡介 VGA(Video Graphics Array)是IBM在1987年隨PS/2機?起推出的?種視頻&#xff0c;具有分辨率?、顯?速率快、顏?豐富等優點&#xff0c;在彩 ?…

【網絡運維】Linux 文本處理利器:sed 命令

Linux 文本處理利器&#xff1a;sed 命令 sed 簡介 sed&#xff08;Stream Editor&#xff09;是一款非交互式的流編輯器&#xff0c;誕生于 1973–1974 年間的貝爾實驗室&#xff0c;由 McMahon 開發。它專為文本處理而生&#xff0c;功能強大&#xff0c;是 Linux 文本處理常…

week2-[一維數組]出現次數

week2-[一維數組]出現次數 題目描述 給定 NNN 個整數A1,A2,…,ANA_1,A_2,\ldots,A_NA1?,A2?,…,AN?。請求出這 NNN 個數中出現次數最多的數的出現次數&#xff0c;以及出現次數最少的數的出現次數。 輸入格式 讀入包括 222 行。第一行只有 111 個整數 NNN&#xff0c;表示數…

力扣 hot100 Day79

215. 數組中的第K個最大元素 給定整數數組 nums 和整數 k&#xff0c;請返回數組中第 k 個最大的元素。 請注意&#xff0c;你需要找的是數組排序后的第 k 個最大的元素&#xff0c;而不是第 k 個不同的元素。 你必須設計并實現時間復雜度為 O(n) 的算法解決此問題。 class…

C++圍繞音視頻相關的資料都有哪些?如何進行學習

音視頻技術涉及的內容廣泛而深入。我會根據自己的知識給你提供一個系統性的音視頻相關資料梳理&#xff0c;主要分為學習路徑與核心知識、開源項目與實戰、開發者資源以及熱點與趨勢幾個方面&#xff0c;希望能幫助你高效地學習和探索。 先用一個表格來概覽主要的學習方向和資…

AI自動化測試,解決傳統自動化測試中??腳本維護成本高、用例覆蓋不全、缺陷發現滯后??等痛點

AI自動化測試&#xff0c;解決傳統自動化測試中??腳本維護成本高、用例覆蓋不全、缺陷發現滯后??等痛點AI自動化測試通過機器學習&#xff08;ML&#xff09;、自然語言處理&#xff08;NLP&#xff09;、計算機視覺&#xff08;CV&#xff09;等技術&#xff0c;解決了傳統…

Laravel 事件與監聽器

下面是一個完整的用戶注冊事件和監聽器的實現示例&#xff0c;包含事件、監聽器、注冊、觸發等完整流程。一、軟件版本 php: 8.2.20laravel: 11mysql: 8.0.29 二、完整實現過程 1.創建事件 1.1 首先創建用戶注冊事件 php artisan make:event UserRegistered1.2 編輯app/Events/…

前端 React 實現數據懶加載-滾動觸底加載數據

在 React 中使用 Intersection Observer API 實現觸底加載分頁&#xff08;無限滾動&#xff09;1.基本實現思路 在列表底部放置一個 哨兵元素&#xff08;Sentinel&#xff09;&#xff08;如 <div>&#xff09;。使用 IntersectionObserver 監聽該元素是否進入視口&…

MySQL 50 道經典練習題及答案

目錄 一、數據表設計與初始化 1. 數據表結構說明 2. 建表語句 3. 插入測試數據 二、練習題及答案 1. 查詢 "01" 課程比 "02" 課程成績高的學生的信息及課程分數 2. 查詢同時存在 "01" 課程和 "02" 課程的情況 3. 查詢存在 &qu…

電競護航小程序搭建三角洲俱樂部護航派單小程序開發游戲派單系統定制開發

成品系統&#xff0c;可以快速搭建。功能概述&#xff1a;商家入駐、老板點單、快捷發單、自定義發單、發單列表、管事入駐、訂單審核裁決、打手入駐、打手排行榜、邀請排行榜、賬戶充值、余額提現、成為客服等

MYSQL-增刪查改CRUD

目錄 &#x1f33f;前言&#xff1a; &#x1f33f;增-C-Create-新增 &#x1f9ca;單行數據全列插入 &#x1f34b;?&#x1f7e9;語法&#xff1a; &#x1f34b;?&#x1f7e9;演示&#xff1a; &#x1f9ca;指定列插入 &#x1f34b;?&#x1f7e9;語法&#xf…

【Loss學習筆記】Focal loss、QFL、DFL、VFL——目標檢測定位損失函數詳解

文章目錄Focal loss&#xff08;2018 ICCV &#xff0c;RetinaNet&#xff09;1、Focal Loss 提出背景問題一&#xff1a;正負樣本數量不均衡問題問題二&#xff1a;難分類/易分類樣本數量不均衡問題對兩個問題的解決2、正負樣本數量不均衡問題的解決&#xff1a;Focal loss 的…