保留版權所有,轉帖注明出處
章節
主成分分析(PCA)是一種常用於減少大數據集維數的降維方法,把大變量集轉換為仍包含大變量集中大部分信息的較小變量集。
減少數據集的變量數量,自然是以犧牲精度為代價的,降維的好處是以略低的精度換取簡便。因為較小的數據集更易於探索和可視化,並且使機器學習算法更容易和更快地分析數據,而不需處理無關變量。
總而言之,主成分分析(PCA)的概念很簡單——減少數據集的變量數量,同時保留盡可能多的信息。
使用scikit-learn,可以很容易地對數據進行主成分分析:
# 創建一個隨機的PCA模型,該模型包含兩個組件
randomized_pca = PCA(n_components=2, svd_solver='randomized')
# 擬合數據並將其轉換為模型
reduced_data_rpca = randomized_pca.fit_transform(digits.data)
# 創建一個常規的PCA模型
pca = PCA(n_components=2)
# 擬合數據並將其轉換為模型
reduced_data_pca = pca.fit_transform(digits.data)
# 檢查形狀
reduced_data_pca.shape
# 打印數據
print(reduced_data_rpca)
print(reduced_data_pca)
輸出
[[ -1.25946586 21.27488217]
[ 7.95761214 -20.76870381]
[ 6.99192224 -9.95598251]
...
[ 10.80128338 -6.96025076]
[ -4.87209834 12.42395157]
[ -0.34439091 6.36555458]]
[[ -1.2594653 21.27488157]
[ 7.95761471 -20.76871125]
[ 6.99191791 -9.95597343]
...
[ 10.80128002 -6.96024527]
[ -4.87209081 12.42395739]
[ -0.34439546 6.36556369]]
隨機的PCA模型在維數較多時性能更好。可以比較常規PCA模型與隨機PCA模型的結果,看看有什么不同。
告訴模型保留兩個組件,是為了確保有二維數據可用來繪圖。
現在可以繪制一個散點圖來可視化數據:
colors = ['black', 'blue', 'purple', 'yellow', 'white', 'red', 'lime', 'cyan', 'orange', 'gray']
# 根據主成分分析結果繪制散點圖
for i in range(len(colors)):
x = reduced_data_rpca[:, 0][digits.target == i]
y = reduced_data_rpca[:, 1][digits.target == i]
plt.scatter(x, y, c=colors[i])
# 設置圖例,0-9用不同顏色表示
plt.legend(digits.target_names, bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
# 設置坐標標簽
plt.xlabel('First Principal Component')
plt.ylabel('Second Principal Component')
# 設置標題
plt.title("PCA Scatter Plot")
# 顯示圖形
plt.show()
顯示: