import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
x = np.empty((100,2))
x[:,0] = np.random.uniform(0.,100,size = 100)
x[:,1] = 0.75 * x[:,0] + 3. + np.random.normal(0,10,size = 100)
pca = PCA(n_components=1)
pca.fit(x)
pca.components_
x_reduction = pca.transform(x)
x_reduction.shape
x_restore = pca.inverse_transform(x_reduction)
x_restore.shape
plt.scatter(x[:,0],x[:,1],color = 'b')
plt.scatter(x_restore[:,0],x_restore[:,1],color = 'r')
plt.show()
%%time
pca = PCA(0.95)
pca.fit(x_train)
x_train_reduction = pca.transform(x_train)
x_test_reduction = pca.transform(x_test)
knn = KNeighborsClassifier()
knn.fit(x_train_reduction,y_train)
print(pca.n_components)
knn.score(x_test_reduction,y_test)