python版PCA(主成分分析)

python版PCA(主成分分析)??

  在用統計分析方法研究這個多變量的課題時,變量個數太多就會增加課題的復雜性。人們自然希望變量個數
較少而得到的信息較多。在很多情形,變量之間是有一定的相關關系的,當兩個變量之間有一定相關關系時,可
以解釋為這兩個變量反映此課題的信息有一定的重疊。主成分分析是對于原先提出的所有變量,建立盡可能少的
新變量,使得這些新變量是兩兩不相關的,而且這些新變量在反映課題的信息方面盡可能保持原有的信息。


原理

  設法將原來變量重新組合成一組新的互相無關的幾個綜合變量,同時根據實際需要從中可以取出幾個較少的
綜合變量盡可能多地反映原來變量的信息的統計方法叫做主成分分析或稱主分量分析,也是數學上處理降維的一

種方法。


步驟

主成分分析主要步驟如下:   

  1. 指標數據標準化;   
  2. 指標之間的相關性判定;  
  3. 計算特征值與特征向量
  4. 計算主成分貢獻率及累計貢獻率
  5. 計算主成分載荷

代碼

[python]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. #-*-?coding:utf-8?-*-??
  2. from?pylab?import?*??
  3. from?numpy?import?*??
  4. ??
  5. def?pca(data,nRedDim=0,normalise=1):??
  6. ????#?數據標準化??
  7. ????m?=?mean(data,axis=0)??
  8. ????data?-=?m??
  9. ????#?協方差矩陣??
  10. ????C?=?cov(transpose(data))??
  11. ????#?計算特征值特征向量,按降序排序??
  12. ????evals,evecs?=?linalg.eig(C)??
  13. ????indices?=?argsort(evals)??
  14. ????indices?=?indices[::-1]??
  15. ????evecs?=?evecs[:,indices]??
  16. ????evals?=?evals[indices]??
  17. ????if?nRedDim>0:??
  18. ????????evecs?=?evecs[:,:nRedDim]??
  19. ??
  20. ????if?normalise:??
  21. ????????for?i?in?range(shape(evecs)[1]):??
  22. ????????????evecs[:,i]?/?linalg.norm(evecs[:,i])?*?sqrt(evals[i])??
  23. ????#?產生新的數據矩陣??
  24. ????x?=?dot(transpose(evecs),transpose(data))??
  25. ????#?重新計算原數據??
  26. ????y=transpose(dot(evecs,x))+m??
  27. ????return?x,y,evals,evecs??
  28. ??
  29. x?=?random.normal(5,.5,1000)??
  30. y?=?random.normal(3,1,1000)??
  31. ??
  32. a?=?x*cos(pi/4)?+?y*sin(pi/4)??
  33. b?=?-x*sin(pi/4)?+?y*cos(pi/4)??
  34. ??
  35. plot(a,b,'.')??
  36. ??
  37. xlabel('x')??
  38. ylabel('y')??
  39. ??
  40. title('raw?dataset')??
  41. ??
  42. data?=?zeros((1000,2))??
  43. data[:,0]?=?a??
  44. data[:,1]?=?b??
  45. x,y,evals,evecs?=?pca(data,1)??
  46. print?y??
  47. figure()??
  48. plot(y[:,0],y[:,1],'.')??
  49. xlabel('x')??
  50. ylabel('y')??
  51. title('new?dataset')??
  52. show()??

效果


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

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

相關文章

干貨|Spring Cloud Bus 消息總線介紹

2019獨角獸企業重金招聘Python工程師標準>>> 繼上一篇 干貨|Spring Cloud Stream 體系及原理介紹 之后,本期我們來了解下 Spring Cloud 體系中的另外一個組件 Spring Cloud Bus (建議先熟悉 Spring Cloud Stream,不然無法理解 Spr…

一類動詞二類動詞三類動詞_基于http動詞的完全無效授權技術

一類動詞二類動詞三類動詞Authorization is a basic feature of modern web applications. It’s a mechanism of specifying access rights or privileges to resources according to user roles. In case of CMS like applications, it needs to be equipped with advanced l…

主成份分析(PCA)詳解

主成分分析法(Principal Component Analysis)大多在數據維度比較高的時候,用來減少數據維度,因而加快模型訓練速度。另外也有些用途,比如圖片壓縮(主要是用SVD,也可以用PCA來做)、因…

thinkphp5記錄

ThinkPHP5 隱藏index.php問題 thinkphp模板輸出cookie,session中… 轉載于:https://www.cnblogs.com/niuben/p/10056049.html

portainer容器可視化管理部署簡要筆記

參考鏈接:https://www.portainer.io/installation/ 1、單個宿主機部署in Linux:$ docker volume create portainer_data$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer 2、單…

證明您履歷表經驗的防彈五步法

How many times have you gotten the question “Tell me more about your work experience at …” or “Describe an experience when you had to overcome a technical challenge”? Is your answer solid and bullet-proof every single time you have to respond? If no…

2018-2019-1 20165231 實驗四 外設驅動程序設計

博客鏈接:https://www.cnblogs.com/heyanda/p/10054680.html 轉載于:https://www.cnblogs.com/Yhooyon/p/10056173.html

如何安裝pylab:python如何導入matplotlib模塊

pylab是python下挺不錯的一個畫圖模塊,使用也非常簡單,記得Mit的計算機科學及編程導論有節課也是用到了這個工具,但這個工具安裝不象用起來那么方便,小編就圖文全程直播下吧 工具/原料 python2.7.10win10 32位方法/步驟 1缺省狀態…

微信掃描二維碼和瀏覽器掃描二維碼 ios和Android 分別進入不用的提示頁面

實現微信掃描二維碼和瀏覽器掃描二維碼 ios和Android 分別進入不用的提示頁面 而進入商城下載該項目 詳情地址:gitee.com/DuJiaHui123… 1.創建完之后 替換文件里面的ios項目地址和Android地址 2.網頁上線 3.百度搜索 二維碼生成 把上線后的地址生成二維碼 4.可以把…

詳解getchar()函數與緩沖區

1、首先,我們看一下這段代碼: 它的簡單意思就是從鍵盤讀入一個字符,然后輸出到屏幕。理所當然,我們輸入1,輸出就是1,輸入2,輸出就是2。 那么我們如果輸出的是12呢? 它的輸出是1。 這…

windows下python安裝Numpy、Scipy、matplotlib模塊

python 2.7 針對2.7的軟件。numpy :http://sourceforge.net/projects/numpy/files/NumPy/1.8.1/ 下載下面的numpy-1.8.2-win32-superpack-python2.7 scipy: http://sourceforge.net/projects/scipy/files/matplotlib:matplotlib-1.1.0.win32-py2.7 以上都是exe文件&#xff0…

restTemplate使用和踩坑總結

日常工作中肯定會遇到服務之間的調用,尤其是現在都是微服務的架構,所以總結一下restTemplate的最常用的用法以及自己踩過的坑。 restTemplate的使用 restTemplate底層調用的是Execute方法,而Execute底層調用的是doExecute,它是基于…

常見編碼總結

本文總結自:https://blog.csdn.net/zmx729618/article/details/51821024 1. ISO 8859-1 字節數:1 范圍:0-255(編碼范圍是0x00-0xFF),其中0x00-0x7F之間完全和ASCII一致(ASCII是7位編碼&#xff…

啟動一個Java進程

windows版本 startup.bat -------------------------------------------------------- rem --------------------------------------------------------------------------- rem Start SMS Server by zhangjin rem --------------------------------------------------------…

Flask框架從入門到精通之參數配置(二)

知識點: 1、參數配置 一、概況 上一篇我們已經把Flask第一個程序運行起來了,那么這一篇主要講一下Flask參數的配置。 二、配置參數 Flask參數配置方式有很多種,每一種都可以達到結果,在合適的場景選擇合適的配置方式。 配置文件 在…

BP神經網絡python簡單實現

BP神經網絡的原理在網上有很詳細的說明,這里就不打算細說,這篇文章主要簡單的方式設計及實現BP神經網絡,并簡單測試下在恒等計算(編碼)作測試。 BP神經網絡模型圖如下 BP神經網絡基本思想 BP神經網絡學習過程由信息的…

golang的reflection(轉)(一)

2019獨角獸企業重金招聘Python工程師標準>>> 反射reflection 可以大大提高程序的靈活性,使得interface{}有更大的發揮余地反射可以使用TypeOf和ValueOf函數從接口中獲取目標對象信息反射會將匿名字段作為獨立字段(匿名字段的本質)…

idea教程--Maven 骨架介紹

簡單的說,Archetype是Maven工程的模板工具包。一個Archetype定義了要做的相同類型事情的初始樣式或模型。這個名稱給我們提供來了一個一致的生成Maven工程的方式。Archetype會幫助作者給用戶創建Maven工程模板,并給用戶提供生成相關工程模板版本的參數化…

datatables.js 簡單使用--多選框和服務器端分頁

說明:datatables是一款jQuery表格插件。感覺EasyUI的datagrid更易用 內容:多選框和服務器端分頁 緣由:寫這篇博客的原因是datatables的文檔寫的不怎么樣,找東西很麻煩 環境:asp.net mvc , vs2015sqlserver2012 顯示效…

python異常(高級) Exception

異常(高級) Exception 異常回顧:     try-except 語句 捕獲(接收)異常通知,把異常流程變為正常流程     try-finally 語句 執行必須要執行的語句.     raise 語句 發送異常通知,同時進入異常流程     assert 語句 發送AssertionError異常     with 語句 wi…