数据导入
代码语言:javascript
复制from sklearn import datasetsimport matplotlib.pyplot as pltimport numpy as npimport pandas as pd
代码语言:javascript
复制iris = datasets.load_iris()iris_x = iris.datairis_y = iris.target
代码语言:javascript
复制print(iris_y.shape)print('*'*50)print(iris_x.shape)
代码语言:javascript
复制(150,)**************************************************(150, 4)
PCA代码部分
代码语言:javascript
复制from sklearn import decomposition
pca = decomposition.PCA()pca
代码语言:javascript
复制PCA(copy=True, iterated_power='auto', n_components=None, random_state=None, svd_solver='auto', tol=0.0, whiten=False)
代码语言:javascript
复制# 使用pca()参数默认设置iris_pca = pca.fit_transform(iris_x)iris_pca.shape
代码语言:javascript
复制(150, 4)
代码语言:javascript
复制# 保留的n(4)个成分各自的方差百分比pca.explained_variance_ratio_
代码语言:javascript
复制array([0.92461621, 0.05301557, 0.01718514, 0.00518309])
代码语言:javascript
复制pca.explained_variance_ratio_.sum()
代码语言:javascript
复制1.0
代码语言:javascript
复制# 将主成分个数设置为2pca = decomposition.PCA(n_components=2)iris_x_2 = pca.fit_transform(iris_x)iris_x_2.shape
代码语言:javascript
复制(150, 2)
代码语言:javascript
复制pca.explained_variance_ratio_
代码语言:javascript
复制array([0.92461621, 0.05301557])
代码语言:javascript
复制pca.explained_variance_ratio_.sum()
代码语言:javascript
复制0.9776317750248034
- TIPS:可以给n_components传入转换后变量至少解释数据的百分比
代码语言:javascript
复制pca = decomposition.PCA(n_components=0.99)iris_x_3 = pca.fit(iris_x).transform(iris_x)pca.explained_variance_ratio_
代码语言:javascript
复制array([0.92461621, 0.05301557, 0.01718514])
代码语言:javascript
复制pca.explained_variance_ratio_.sum()
代码语言:javascript
复制0.9948169145498101
可视化部分
代码语言:javascript
复制%matplotlib inlinefig = plt.figure(figsize=(20,7)) ax = fig.add_subplot(121) ax.scatter(iris_x[:,0],iris_x[:,1],c=iris_y,s=40) ax.set_title('Before PCA')ax2 = fig.add_subplot(122) ax2.scatter(iris_x_3[:,0],iris_x_3[:,1],c=iris_y,s=40) ax2.set_title('After PCA')
代码语言:javascript
复制<matplotlib.text.Text at 0x188d58e4ac8>