pca 主成分分析
將資料集標準化成均值為 0,標準差為 1
計算相關矩陣
將相關矩陣分解成它的特徵向量、特徵值
基於降序的特徵值選取 top —n 的特徵向量
特徵值標準。特徵值為1,意味著這個成分可以解釋乙個變數的變化價值。依據這個標準,需要採取特徵值大於或等於1的特徵值,可將1 作為特徵值的閾值。
import numpy as np
from sklearn.datasets import load_iris
from sklearn.preprocessing import scale
import scipy
import matplotlib.pyplot as plt
# 匯入自帶的iris 鳶尾花資料
data = load_iris(
)x= data[
'data'
]y = data[
'target'
]# 將x 資料集標準化處理(均值為0 標準差為1)
# 因為pca是一種無監督的方法,不必處理目標值 y
x_s = scale(x,with_mean=
true
,with_std=
true
,axis=0)
# 計算相關關係矩陣
x_c =np.corrcoef(x_s.t)
# 從相關關係矩陣中找到特徵值和特徵向量
eig_val,r_eig_vec = scipy.linalg.eig(x_c)
print
("eign values \n%s"
%( eig_val)
)print
("\n eign vectors \n%s"
%(r_eig_vec)
)# 基於降序的特徵值的選擇 (大於等於1 )
w = r_eig_vec[:,
0:2]
# 通過特徵向量,將原來的資料集合將為 2維(原來是4維)
x_rd = x_s.dot(w)
# 畫出二維資料的散點圖
plt.figure(1)
plt.scatter(x_rd[:,
0],x_rd[:,
1],c=y)
資料降低維度後,利用2維度資料,也可以對目標值進行分類劃分。
# 普通pca方法是一種線性投射技術,只對資料是線性分布的情況有效
from sklearn.decomposition import pca
pca = pca(n_components =2)
pca.fit(x)
x_pca = pca.transform(x)
當資料不是線性分布時,需要使用非線性技術來給資料降維
from sklearn.decomposition import kernelpca
kpca = kernelpca(kernel =
"rbf"
)# kernel = "rbf" 徑向基函式
# kernel = "linear" 線性
# kernel = "poly" 多項式
# kernel = "sigmoid" 常見的s型函式
# kernel = "cosine" 余弦值
# kernel = "precomputed" 預先計算的
kpca.fit(x)
x_kpca = kpca.transform(x)
python資料分析
以網路爬蟲為例,網路爬蟲是乙個自動提取網頁的程式,爬蟲是搜尋引擎的第一步,也是最容易的一部。網頁搜尋,建立索引,查詢排序 用c c 效率高,速度塊,適合通用搜尋引擎做往往爬取。但是它的缺點也特別明顯 開發慢,寫起來又臭又長的。而python無論在資料分析還是在指令碼自動化編寫尚都是簡單,易學的。良好...
python資料分析
陣列間的算術運算 npwhere pandas的使用 np.random.rand 3,4 產生乙個3行4列的矩陣 0 1之間的 in 32 data1 1,2,3,4.0 in 34 arr1 np.array data1 in 35 arr1 out 35 array 1.2.3.4.in 37...
python資料分析
1.資料分析的含義與目標 2.python與資料分析 3.python資料分析大家族 4.python環境搭建 一 numpy 功能 ndarray 多維操作 線性代數 官網 numpy是python語言的乙個擴充程式庫。支援高階大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式庫。nu...