1 維度壓縮
主成分分析(rincipal components Analysis)
在減少數據集的維度的同時,保持對方差貢獻最大的特徵
2 PCA方法
pca_3=PCA(n_components=3) 維度設置
fit 訓練數據
data_pca_3=pca_3.fit_transform(data)
3 代碼案例事例
import pandas
from sklearn import datasets
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from mpl_toolkits.mplot3d import Axes3D
# d加載庫裏邊的iris數據集
iris=datasets.load_iris()
# 選擇自變量和因變量
data=iris.data
target=iris.target
# 選擇維度並進行訓練
pca_3=PCA(n_components=3)
data_pca_3=pca_3.fit_transform(data)
"""
散點樣式:
參數 樣式
'.' 實心點
'o' 圓圈
',' 一個像素點
'x' 叉號
'+' 十字
'*' 星號
'^' 'v' '<' '>' 三角形(上下左右)
'1' '2' '3' '4' 三叉號(上下左右)
顏色:
參數 顏色
'b' 藍
'g' 綠
'r' 紅
'c' 青
'm' 品紅
'y' 黃
'k' 黑
'w' 白
"""
### 定義顏色和三點樣式
colors={
0:'r',
1:'b',
2:'k'
}
markers={
0:'X',
1:'D',
2:'o'
}
# 彈出圖形 %matplotlib qt
# 調用三維數據繪圖方法
# # figure 3,指定figure的編號並指定figure的大小,
# 指定線的顏色, 寬度和類型
fig=plt.figure(1,figsize=(8,6))
ax=Axes3D(fig,elev=-150,azim=110)
# 對降維後的數據進行分組
data_pca_gb = pandas.DataFrame(
data_pca_3
).groupby(by=target)
# 用數據調用scatter方法進行繪圖
for g in data_pca_gb.groups:
ax.scatter(
data_pca_gb.get_group(g)[0], # x軸
data_pca_gb.get_group(g)[1],
data_pca_gb.get_group(g)[2],
c=colors[g],
marker=markers[g],
cmap=plt.cm.Paired
)
#二維數據
pca_2 = PCA(n_components=2)
data_pca_2 = pca_2.fit_transform(data)
data_pca_gb = pandas.DataFrame(data_pca_2).groupby(target)
import matplotlib.pyplot as plt;
for g in data_pca_gb.groups:
plt.scatter(
data_pca_gb.get_group(g)[0],
data_pca_gb.get_group(g)[1],
c=colors[g],
marker=markers[g]
)