最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實(shí)現(xiàn)PCA降維的示例詳解

 更新時(shí)間:2020年02月24日 13:07:41   作者:WANG_DDD  
今天小編就為大家分享一篇python實(shí)現(xiàn)PCA降維的示例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

概述

本文主要介紹一種降維方法,PCA(Principal Component Analysis,主成分分析)。降維致力于解決三類問題。

1. 降維可以緩解維度災(zāi)難問題;

2. 降維可以在壓縮數(shù)據(jù)的同時(shí)讓信息損失最小化;

3. 理解幾百個(gè)維度的數(shù)據(jù)結(jié)構(gòu)很困難,兩三個(gè)維度的數(shù)據(jù)通過可視化更容易理解。

PCA簡介

在理解特征提取與處理時(shí),涉及高維特征向量的問題往往容易陷入維度災(zāi)難。隨著數(shù)據(jù)集維度的增加,算法學(xué)習(xí)需要的樣本數(shù)量呈指數(shù)級(jí)增加。有些應(yīng)用中,遇到這樣的大數(shù)據(jù)是非常不利的,而且從大數(shù)據(jù)集中學(xué)習(xí)需要更多的內(nèi)存和處理能力。另外,隨著維度的增加,數(shù)據(jù)的稀疏性會(huì)越來越高。在高維向量空間中探索同樣的數(shù)據(jù)集比在同樣稀疏的數(shù)據(jù)集中探索更加困難。

主成分分析也稱為卡爾胡寧-勒夫變換(Karhunen-Loeve Transform),是一種用于探索高維數(shù)據(jù)結(jié)構(gòu)的技術(shù)。PCA通常用于高維數(shù)據(jù)集的探索與可視化。還可以用于數(shù)據(jù)壓縮,數(shù)據(jù)預(yù)處理等。PCA可以把可能具有相關(guān)性的高維變量合成線性無關(guān)的低維變量,稱為主成分( principal components)。新的低維數(shù)據(jù)集會(huì)盡可能的保留原始數(shù)據(jù)的變量。

PCA將數(shù)據(jù)投射到一個(gè)低維子空間實(shí)現(xiàn)降維。例如,二維數(shù)據(jù)集降維就是把點(diǎn)投射成一條線,數(shù)據(jù)集的每個(gè)樣本都可以用一個(gè)值表示,不需要兩個(gè)值。三維數(shù)據(jù)集可以降成二維,就是把變量映射成一個(gè)平面。一般情況下,nn維數(shù)據(jù)集可以通過映射降成kk維子空間,其中k≤nk≤n。

假如你是一本養(yǎng)花工具宣傳冊(cè)的攝影師,你正在拍攝一個(gè)水壺。水壺是三維的,但是照片是二維的,為了更全面的把水壺展示給客戶,你需要從不同角度拍幾張圖片。下圖是你從四個(gè)方向拍的照片:

第一張圖里水壺的背面可以看到,但是看不到前面。第二張圖是拍前面,可以看到壺嘴,這張圖可以提供了第一張圖缺失的信息,但是壺把看不到了。從第三張俯視圖里無法看出壺的高度。第四張圖是你真正想要的,水壺的高度,頂部,壺嘴和壺把都清晰可見。

PCA的設(shè)計(jì)理念與此類似,它可以將高維數(shù)據(jù)集映射到低維空間的同時(shí),盡可能的保留更多變量。PCA旋轉(zhuǎn)數(shù)據(jù)集與其主成分對(duì)齊,將最多的變量保留到第一主成分中。假設(shè)我們有下圖所示的數(shù)據(jù)集:

數(shù)據(jù)集看起來像一個(gè)從原點(diǎn)到右上角延伸的細(xì)長扁平的橢圓。要降低整個(gè)數(shù)據(jù)集的維度,我們必須把點(diǎn)映射成一條線。下圖中的兩條線都是數(shù)據(jù)集可以映射的,映射到哪條線樣本變化最大?

顯然,樣本映射到黑色虛線的變化比映射到紅色點(diǎn)線的變化要大的多。實(shí)際上,這條黑色虛線就是第一主成分。第二主成分必須與第一主成分正交,也就是說第二主成分必須是在統(tǒng)計(jì)學(xué)上獨(dú)立的,會(huì)出現(xiàn)在與第一主成分垂直的方向,如下圖所示:

后面的每個(gè)主成分也會(huì)盡量多的保留剩下的變量,唯一的要求就是每一個(gè)主成分需要和前面的主成分正交。

現(xiàn)在假設(shè)數(shù)據(jù)集是三維的,散點(diǎn)圖看起來像是沿著一個(gè)軸旋轉(zhuǎn)的圓盤。

這些點(diǎn)可以通過旋轉(zhuǎn)和變換使圓盤完全變成二維的?,F(xiàn)在這些點(diǎn)看著像一個(gè)橢圓,第三維上基本沒有變量,可以被忽略。

當(dāng)數(shù)據(jù)集不同維度上的方差分布不均勻的時(shí)候,PCA最有用。(如果是一個(gè)球殼形數(shù)據(jù)集,PCA不能有效的發(fā)揮作用,因?yàn)楦鱾€(gè)方向上的方差都相等;沒有丟失大量的信息維度一個(gè)都不能忽略)。

python實(shí)現(xiàn)PCA降維代碼

# coding=utf-8
from sklearn.decomposition import PCA 
from pandas.core.frame import DataFrame
import pandas as pd 
import numpy as np 
l=[]
with open('test.csv','r') as fd:
 
  line= fd.readline()
  while line:
    if line =="":
      continue
 
    line = line.strip()
    word = line.split(",")
    l.append(word)
    line= fd.readline()
 
data_l=DataFrame(l)
print (data_l)
dataMat = np.array(data_l) 
 
 
pca_sk = PCA(n_components=2) 
newMat = pca_sk.fit_transform(dataMat) 
 
 
data1 = DataFrame(newMat)
data1.to_csv('test_PCA.csv',index=False,header=False)

以上這篇python實(shí)現(xiàn)PCA降維的示例詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python 自定義異常和主動(dòng)拋出異常(raise)的操作

    python 自定義異常和主動(dòng)拋出異常(raise)的操作

    這篇文章主要介紹了python 自定義異常和主動(dòng)拋出異常(raise)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Python如何優(yōu)雅刪除字符列表空字符及None元素

    Python如何優(yōu)雅刪除字符列表空字符及None元素

    這篇文章主要介紹了Python如何優(yōu)雅刪除字符列表空字符及None元素,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python使用正則表達(dá)式過濾或替換HTML標(biāo)簽的方法詳解

    Python使用正則表達(dá)式過濾或替換HTML標(biāo)簽的方法詳解

    這篇文章主要介紹了Python使用正則表達(dá)式過濾或替換HTML標(biāo)簽的方法,簡單介紹了Python正則相關(guān)語法并結(jié)合具體實(shí)例形式分析了Python基于正則表達(dá)式的HTML標(biāo)簽過濾與替換相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • python?scatter繪制散點(diǎn)圖

    python?scatter繪制散點(diǎn)圖

    這篇文章主要介紹了python?scatter繪制散點(diǎn)圖,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • MindSpore導(dǎo)入CUDA算子的解決方案

    MindSpore導(dǎo)入CUDA算子的解決方案

    本文介紹了在MindSpore標(biāo)準(zhǔn)格式下進(jìn)行CUDA算子開發(fā)的方法和流程,可以讓開發(fā)者在現(xiàn)有的AI框架下仍然可以調(diào)用基于CUDA實(shí)現(xiàn)的高性能的算子,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • 淺談Python基礎(chǔ)之列表那些事兒

    淺談Python基礎(chǔ)之列表那些事兒

    這篇文章主要介紹了淺談Python基礎(chǔ)之列表那些事兒,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)Python基礎(chǔ)的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Python 控制終端輸出文字的實(shí)例

    Python 控制終端輸出文字的實(shí)例

    今天小編就為大家分享一篇Python 控制終端輸出文字的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Django admin顯示json字段方法詳解

    Django admin顯示json字段方法詳解

    這篇文章主要為大家介紹了Django admin顯示json字段方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • python?中的jieba分詞庫

    python?中的jieba分詞庫

    這篇文章主要介紹了python中的jieba分詞庫,jieba?庫是優(yōu)秀的中文分詞第三方庫,中文文本需要通過分詞獲得單個(gè)的詞語,下面文章的的詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • Python使用Marshmallow輕松實(shí)現(xiàn)序列化和反序列化

    Python使用Marshmallow輕松實(shí)現(xiàn)序列化和反序列化

    這篇文章主要為大家詳細(xì)介紹了Python如何使用Marshmallow輕松實(shí)現(xiàn)序列化和反序列化,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2025-03-03

最新評(píng)論

营口市| 隆林| 青川县| 文登市| 沁水县| 东阳市| 宜春市| 锡林郭勒盟| 时尚| 湘阴县| 阳泉市| 鄂托克前旗| 永嘉县| 日喀则市| 萨迦县| 河间市| 全南县| 库伦旗| 福贡县| 特克斯县| 运城市| 石泉县| 渑池县| 怀集县| 武宣县| 镇赉县| 铁力市| 桂东县| 蓬莱市| 拜城县| 商河县| 和田市| 漳平市| 梨树县| 昌江| 温州市| 广元市| 晋江市| 北票市| 温泉县| 乐东|