SciKit-Learn 可視化數據:主成分分析(PCA)


保留版權所有,轉帖注明出處


章節


主成分分析(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()

顯示:

圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM