日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

PCA主成分分析以及Python实现(阅读笔记)

發(fā)布時間:2025/4/16 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PCA主成分分析以及Python实现(阅读笔记) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡述

PCA日常使用,但還沒有研究過其理論,這讓我很好奇。

理論部分

《機器學習》中是這樣開始的:

對于正交屬性空間的樣本點,如何用一個超平面來對所有的樣本點進行表達。

  • 超平面和半空間是優(yōu)化領域的兩個重要概念
  • 簡單來說,矩陣方程W?X+b=0W*X+b = 0W?X+b=0表示的是超平面,W?X+b≥0W*X+b \geq 0W?X+b0表示的就是半空間。
  • 顯然超平面是直線在高維空間的擴展。(只有這句話是書中的點,其他都是我補充的)

這樣的超平面(表達點的超平面),這個**“表達”**的含義,我的理解是:對于點在超平面上的投影Projection。

  • 最近重構性:樣本點到這個超平面的距離都足夠的近;
  • 最大可分性:樣本點到這個超平面上的投影都足夠的分散

優(yōu)化的矩陣變?yōu)?/p>

max?Wtr(WTXXTW)s.t.WTW=1\max_W{tr(W^TXX^TW)}\\s.t. W^TW=1Wmax?tr(WTXXTW)s.t.WTW=1

解得(拉格朗日乘子法)

XTXwi=λiwiX^TXw_i=\lambda_iw_iXTXwi?=λi?wi?

明顯λ\lambdaλXTXX^TXXTX的特征值。

算法流程

輸入: 樣本集D={i=1,...,m∣xi}D=\{i=1,...,m| x_i\}D={i=1,...,mxi?},低維度空間維數d
過程:

  • 對樣本進行中心化:xi=xi?1m∑imxix_i = x_i -\frac{1}{m}\sum_i^m{x_i}xi?=xi??m1?im?xi?
  • 計算協(xié)方差矩陣XTXX^TXXTX
  • 計算協(xié)方差矩陣XTXX^TXXTX的特征向量,同時按照特征值進行排序
  • 返回特征值最大的前d個向量作為投影矩陣
  • 用投影矩陣來轉換所有節(jié)點
  • Python實現(xiàn)

    • 導入數據
    from sklearn import datasetsiris = datasets.load_iris()
    • 用sklearn版本的PCA
    from sklearn.decomposition import PCA import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeansX_reduced = PCA(n_components=2).fit_transform(iris.data) kmeans = KMeans(n_clusters=3).fit(X_reduced) plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=kmeans.labels_, cmap=plt.cm.Set1)

    • 自己實現(xiàn)PCA
    import numpy as npdef pca(X, d):# Centralizationmeans = np.mean(X, 0)X = X - means# Covariance MatrixcovM = np.dot(X.T, X)eigval, eigvec = np.linalg.eig(covM)indexes = np.argsort(eigval)[-d:]W = eigvec[:, indexes]return np.dot(X, W)
    • 用自己的pca跑一下
    X_pca = pca(iris.data, 2) kmeans = KMeans(n_clusters=3).fit(X_pca) plt.scatter(X_pca[:, 0], X_pca[:, 1], c=kmeans.labels_, cmap=plt.cm.Set1)
    • 自己跑的效果圖(就是跟上面的在橫縱軸上發(fā)生了顛倒而已)完全一致~

    總結

    以上是生活随笔為你收集整理的PCA主成分分析以及Python实现(阅读笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。