- 回歸:産生連續結果,可用于預測
- 分類:産生離散結果,可用于預測
- 聚類:産生一組集合,用于降維
聚類分析: 是将一組研究對象分為相對同質的群組的統計分析技術,常用到的聚類分析有PCA主成分分析,K-means分析
PCA主成分分析
通過線型變換将原始資料變換為一組各次元線性無關的表示,用于提取資料的主要特征分量,高維資料的降維
主成分分析(Principal Components Analysis),簡稱PCA,是一種資料降維技術,用于資料預處理。一般我們擷取的原始資料次元都很高,比如1000個特征,在這1000個特征中可能包含了很多無用的資訊或者噪聲,真正有用的特征才100個,那麼我們可以運用PCA算法将1000個特征降到100個特征。這樣不僅可以去除無用的噪聲,還能減少很大的計算量。
PCA算法是如何實作的?
簡單來說,就是将資料從原始的空間中轉換到新的特征空間中,例如原始的空間是三維的(x,y,z),x、y、z分别是原始空間的三個基,我們可以通過某種方法,用新的坐标系(a,b,c)來表示原始的資料,那麼a、b、c就是新的基,它們組成新的特征空間。在新的特征空間中,可能所有的資料在c上的投影都接近于0,即可以忽略,那麼我們就可以直接用(a,b)來表示資料,這樣資料就從三維的(x,y,z)降到了二維的(a,b)。
PCA算法的python實作
資料建立:産生一組二維的資料
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 資料建立
rng = np.random.RandomState(8)
data = np.dot(rng.rand(2,2),rng.randn(2,200)).T
df = pd.DataFrame({'X1':data[:,0],'X2':data[:,1]})
print(df.head())
print(df.shape)
plt.scatter(df['X1'],df['X2'],alpha = 0.8 ,marker = '.')
plt.axis('equal')
plt.grid()
二維資料降維
from sklearn.decomposition import PCA
pca = PCA(n_components = 1)
pca.fit(df)
# n_components:降為一維
# copy:運作算法是是否将原始數組複制,預設為TRUE
print(pca.explained_variance_)
print(pca.components_)
print(pca.n_components_)
# 降維後主成分:a1 = 0.7788006 * X1 + 0.627271588 *X2
x_pca = pca.transform(df)#資料轉換
x_new = pca.inverse_transform(x_pca) #降維後的資料轉化為原始資料
print('orifinal shape:',df.shape)
print('transformed shape',x_pca.shape)
print(x_pca[:5])
print('--------------------')
plt.scatter(df['X1'],df['X2'],alpha = 0.8,marker = '.')
plt.scatter(x_new[:,0],x_new[:,1],alpha = 0.8,marker = '.',color = 'r')
plt.axis('equal')
plt.grid()
紅色資料為降維後的資料