欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python sklearn庫實現PCA教程(以鳶尾花分類為例)

 更新時間:2020年02月24日 12:59:02   作者:Cindy0812  
今天小編就為大家分享一篇Python sklearn庫實現PCA教程(以鳶尾花分類為例),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

PCA簡介

主成分分析(Principal Component Analysis,PCA)是最常用的一種降維方法,通常用于高維數據集的探索與可視化,還可以用作數據壓縮和預處理等。矩陣的主成分就是其協(xié)方差矩陣對應的特征向量,按照對應的特征值大小進行排序,最大的特征值就是第一主成分,其次是第二主成分,以此類推。

基本步驟:

具體實現

我們通過Python的sklearn庫來實現鳶尾花數據進行降維,數據本身是4維的降維后變成2維,可以在平面中畫出樣本點的分布。樣本數據結構如下圖:

其中樣本總數為150,鳶尾花的類別有三種,分別標記為0,1,2

代碼

import matplotlib.pyplot as plt     #加載matplotlib用于數據的可視化
from sklearn.decomposition import PCA   #加載PCA算法包
from sklearn.datasets import load_iris


data=load_iris()
y=data.target
x=data.data
pca=PCA(n_components=2)  #加載PCA算法,設置降維后主成分數目為2
reduced_x=pca.fit_transform(x)#對樣本進行降維

red_x,red_y=[],[]
blue_x,blue_y=[],[]
green_x,green_y=[],[]


for i in range(len(reduced_x)):
 if y[i] ==0:
  red_x.append(reduced_x[i][0])
  red_y.append(reduced_x[i][1])

 elif y[i]==1:
  blue_x.append(reduced_x[i][0])
  blue_y.append(reduced_x[i][1])

 else:
  green_x.append(reduced_x[i][0])
  green_y.append(reduced_x[i][1])

#可視化
plt.scatter(red_x,red_y,c='r',marker='x')
plt.scatter(blue_x,blue_y,c='b',marker='D')
plt.scatter(green_x,green_y,c='g',marker='.')
plt.show()

結果圖

知識拓展:python sklearn PCA 實例代碼-主成分分析

python sklearn decomposition PCA 主成分分析

主成分分析(PCA)

1、主成分分析(Principal Component Analysis,PCA)是最常用的一種降維方法,

通常用于高維數據集的探索與可視化,還可以用作數據壓縮和預處理

2、PCA可以把具有相關性的高維變量合成為線性無關的低維變量,稱為主成分。

主成分能夠盡可能保留原始數據的信息

3、概念

方差:用來度量一組數據的分散程度

協(xié)方差:用來度量兩個變量之間的線性相關性程度,若兩個變量的協(xié)議差為0,二者線性無關

協(xié)方差矩陣:矩陣的特征向量是描述數據集結構的非零向量,?? ⃗=?? ⃗

特征向量和特征值:? ⃗ 特征向量,?是特征值

4、提取:

矩陣的主成分是其協(xié)方差矩陣對應的特征向量,按照對應的特征值大小進行排序,最大的特征值就是第一主成分,其次是第二主成分

5、原理:

1、對所有樣本進行中心化:xi-(x1+x2…xm)/m
2、計算樣本的協(xié)方差矩陣X(X.T)
3、對協(xié)方差矩陣X(X.T)做特征值分解
4、取最大的d個特征值所對應的特征向量w1,w2…wd

輸出投影矩陣W=(w1,w2,…,wd)

6、參數說明

sklearn.decomposition.PCA(n_components=None,copy=True,whithen=False,svd_solver=‘auto',tol=0.0,

iterated_power=‘auto',random_state=None)

n_components:指定主成分的個數,即降維后數據的維度

svd_slover:設置特征值分解的方法:‘full',‘arpack',‘randomized'

PCA實現高維度數據可視化 實例

目標:

已知鳶尾花數據是4維的,共三類樣本,使用PCA實現對鳶尾花數據進行降維,實現在二維平面上的可視化

實例程序編寫

import matplotlib.pyplot as plt
import sklearn.decomposition as dp
from sklearn.datasets.base import load_iris

x,y=load_iris(return_X_y=True) #加載數據,x表示數據集中的屬性數據,y表示數據標簽
pca=dp.PCA(n_components=2) #加載pca算法,設置降維后主成分數目為2
reduced_x=pca.fit_transform(x) #對原始數據進行降維,保存在reduced_x中
red_x,red_y=[],[]
blue_x,blue_y=[],[]
green_x,green_y=[],[]
for i in range(len(reduced_x)): #按鳶尾花的類別將降維后的數據點保存在不同的表表中
 if y[i]==0:
  red_x.append(reduced_x[i][0])
  red_y.append(reduced_x[i][1])
 elif y[i]==1:
  blue_x.append(reduced_x[i][0])
  blue_y.append(reduced_x[i][1])
 else:
  green_x.append(reduced_x[i][0])
  green_y.append(reduced_x[i][1])
plt.scatter(red_x,red_y,c='r',marker='x')
plt.scatter(blue_x,blue_y,c='b',marker='D')
plt.scatter(green_x,green_y,c='g',marker='.')
plt.show()

以上這篇Python sklearn庫實現PCA教程(以鳶尾花分類為例)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python實現雙向鏈表

    Python實現雙向鏈表

    這篇文章主要為大家詳細介紹了Python實現雙向鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Python標準庫time使用方式詳解

    Python標準庫time使用方式詳解

    這篇文章主要介紹了Python標準庫time使用方式詳解,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • python神經網絡Keras實現GRU及其參數量

    python神經網絡Keras實現GRU及其參數量

    這篇文章主要為大家介紹了python神經網絡Keras實現GRU及其參數量,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • 使用Python實現獲取文件詳細信息

    使用Python實現獲取文件詳細信息

    Python提供了豐富的內置模塊和函數,獲取和操作文件的各種屬性信息,比如大小、修改時間、權限以及路徑等,本文將通過詳細的示例代碼展示如何使用Python中的os和os.path模塊來獲取文件屬性信息,需要的可以參考下
    2023-12-12
  • 一文教會你用nginx+uwsgi部署自己的django項目

    一文教會你用nginx+uwsgi部署自己的django項目

    uWSGI是一個Web服務器,它實現了WSGI協(xié)議、uwsgi、http等協(xié)議,下面這篇文章主要給大家介紹了關于用nginx+uwsgi部署自己的django項目的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • python學生信息管理系統(tǒng)

    python學生信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了python學生信息管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • TensorFlow實現非線性支持向量機的實現方法

    TensorFlow實現非線性支持向量機的實現方法

    本篇文章主要介紹了TensorFlow實現非線性支持向量機的實現方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Python之串口收發(fā)的異步程序

    Python之串口收發(fā)的異步程序

    這篇文章主要介紹了Python之串口收發(fā)的異步程序,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 詳細探究Python中的字典容器

    詳細探究Python中的字典容器

    這篇文章主要介紹了Python中的字典容器,本文來自于IBM官方網站技術文檔,需要的朋友可以參考下
    2015-04-04
  • Pandas時間數據處理詳細教程

    Pandas時間數據處理詳細教程

    日常工作中日期格式有多種表達形式,比如年份開頭或是月份開頭2022/6/4、6/4/2022等,通過pandas的日期數據處理,這篇文章主要給大家介紹了關于Pandas時間數據處理的相關資料,需要的朋友可以參考下
    2023-01-01

最新評論