import os
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
sns.set()
#from mpl_toolkits.mplot3d import Axes3D
os.chdir(r'D:\projects\wordpress\ex56')
os.getcwd()
rng = np.random.RandomState()
X = np.dot(rng.rand(2, 2), rng.randn(2, 200)).T
plt.scatter(X[:, 0], X[:, 1])
plt.axis('equal')
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca.fit(X)
print(pca.components_)
print(pca.explained_variance_)
def draw_vector(v0, v1, ax=None):
ax = ax or plt.gca()
arrowprops=dict(arrowstyle='->',color='blue',linewidth=2,shrinkA=0, shrinkB=0)
ax.annotate('', v1, v0, arrowprops=arrowprops)
plt.scatter(X[:, 0], X[:, 1], c='red', alpha=0.3)
for length, vector in zip(pca.explained_variance_, pca.components_):
v = vector * 3 * np.sqrt(length)
draw_vector(pca.mean_, pca.mean_ + v)
plt.axis('equal');
plt.savefig("example56.png", dpi=100)
plt.show()
plt.close()
pca = PCA(n_components=1)
pca.fit(X)
X_pca = pca.transform(X)
print("original shape: ", X.shape)
print("transformed shape:", X_pca.shape)
X_new = pca.inverse_transform(X_pca)
plt.scatter(X[:, 0], X[:, 1], alpha=0.2)
plt.scatter(X_new[:, 0], X_new[:, 1], c='red',alpha=0.2)
plt.axis('equal')
plt.savefig("example56_1.png", dpi=100)
plt.show()
plt.close()
Like this:
Like Loading...
Related
Recent Comments