(手寫)PCA原理及其Python實(shí)現(xiàn)圖文詳解
1、背景
為什么需要降維呢?
因?yàn)閿?shù)據(jù)個(gè)數(shù) N 和每個(gè)數(shù)據(jù)的維度 p 不滿足 N >> p,造成了模型結(jié)果的“過(guò)擬合”。有兩種方法解決上述問(wèn)題:
增加N;減小p。
這里我們講解的 PCA 屬于方法2。
2、樣本均值和樣本方差矩陣
3、PCA
3.1 最大投影方差
3.2 最小重構(gòu)距離
4、Python實(shí)現(xiàn)
""" -*- coding: utf-8 -*- @ Time : 2021/8/15 22:19 @ Author : Raymond @ Email : wanght2316@163.com @ Editor : Pycharm """ from sklearn.datasets import load_digits from sklearn.decomposition import PCA import pandas as pd import matplotlib.pyplot as plt digits = load_digits() print(digits.keys()) print("數(shù)據(jù)的形狀為: {}".format(digits['data'].shape)) # 構(gòu)建模型 - 降到10 d pca = PCA(n_components=10) pca.fit(digits.data) projected=pca.fit_transform(digits.data) print('降維后主成分的方差值為:',pca.explained_variance_) print('降維后主成分的方差值占總方差的比例為:',pca.explained_variance_ratio_) print('降維后最大方差的成分為:',pca.components_) print('降維后主成分的個(gè)數(shù)為:',pca.n_components_) print('original shape:',digits.data.shape) print('transformed shape:',projected.shape) s = pca.explained_variance_ c_s = pd.DataFrame({'b': s,'b_sum': s.cumsum() / s.sum()}) c_s['b_sum'].plot(style= '--ko',figsize= (10, 4)) plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默認(rèn)字體 plt.rcParams['axes.unicode_minus'] = False # 解決保存圖像是負(fù)號(hào)'-'顯示為方塊的問(wèn)題 plt.axhline(0.85, color= 'r',linestyle= '--') plt.text(6, c_s['b_sum'].iloc[6]-0.08, '第7個(gè)成分累計(jì)貢獻(xiàn)率超過(guò)85%', color='b') plt.title('PCA 各成分累計(jì)占比') plt.grid() plt.savefig('./PCA.jpg') plt.show()
結(jié)果展示:
總結(jié)
本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python實(shí)現(xiàn)對(duì)圖像加噪(高斯噪聲 椒鹽噪聲)
這篇文章主要介紹了展示通過(guò)Python給圖像疊加不同等級(jí)的椒鹽噪聲和高斯噪聲的代碼,相應(yīng)的疊加噪聲的已編為對(duì)應(yīng)的類,可實(shí)例化使用。感興趣的同學(xué)可以看看2021-11-11python 還原梯度下降算法實(shí)現(xiàn)一維線性回歸
這篇文章主要介紹了python 還原梯度下降算法實(shí)現(xiàn)一維線性回歸,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10Python中移除List重復(fù)項(xiàng)的五種方法
本文列些處幾種去除在Python 列表中(list)可能存在的重復(fù)項(xiàng),這在很多應(yīng)用程序中都會(huì)遇到的需求,本文介紹幾種方法,感興趣的可以了解一下2021-05-05Python實(shí)現(xiàn)獲取郵箱內(nèi)容并解析的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)獲取郵箱內(nèi)容并解析的方法,結(jié)合完整實(shí)例形式分析了Python登陸pop3服務(wù)器并解析獲取郵箱內(nèi)容相關(guān)操作技巧,需要的朋友可以參考下2018-06-06