#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Sun Apr 21 03:22:03 2019 @author: maachou """ from sklearn.datasets import load_boston import matplotlib.pyplot as plt from PCA import PCA pca = PCA(output_dim=2) data = load_boston() X = data.data print(X.shape) print(pca.fit_transform(X).shape)
for ii in range(dfiris.shape[1]): plt.scatter(np.arange(dfiris.shape[0]), dfiris[:, ii], s=5, cmap=color) #%% kpca = kPCA(kernel='polynomial').fit(X) kpca.explained_variance new = kpca.fit_transform() new = kpca.fit_transform(X) plt.scatter(new[:, 0], new[:, 1], c=y) plt.plot(np.cumsum(kpca.explained_variance)) #%% PCA on raandom datasets pca = PCA(2).fit(dfswis) pca = kPCA(k=2, kernel='rbf').fit(dfclass) newX = pca.fit_transform() plt.scatter(newX[:, 0], newX[:, 1], c=yclass, s=3) pca.explained_variance #%% Image dataset example from sklearn.datasets import fetch_lfw_people faces = fetch_lfw_people(min_faces_per_person=60) print(faces.target_names) print(faces.images.shape) pca = PCA(150).fit(faces.data) #pca = kPCA(k=150, kernel='linear').fit(faces.data.T) projected = pca.inverse_transform() #fig, axes = plt.subplots(3, 8, figsize=(9, 4), # subplot_kw={'xticks':[], 'yticks':[]},
print("KNN acc on the original data", acc) plot_confusion_matrix(y_test, pred, title='KNN Confusion matrix original data') plt.show() print("knn report", metrics.classification_report(y_test, pred)) s = SVM() s.train(x_train, y_train, x_test, y_test) acc, _, pred = s.predict(x_test, y_test) print("svm acc on original data", acc) plot_confusion_matrix(y_test, pred, title='svm Confusion matrix') plt.show() print("svm report", metrics.classification_report(y_test, pred)) #Dimension reduction using PCA start = timeit.default_timer() pca = PCA(rid_dim) (x_train_trans, x_test_trans) = pca.fit_transform(x_train, x_test) stop = timeit.default_timer() print('Time: ', stop - start) #KNN index, _ = choose_k(x_train_trans, y_train, x_test_trans, y_test, 5, 8) print index knn = KNN(index) knn.train(x_train_trans, y_train) acc, pred = knn.accuracy(x_test_trans, y_test) print("KNN acc on the PCA data", acc) plot_confusion_matrix(y_test, pred, title='Confusion matrix PCA data') plt.show() print("pca + knn report", metrics.classification_report(y_test, pred)) #SVM s = SVM()
from PCA import PCA import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D X = np.random.rand(500, 3) X = PCA.mean_normalize(X) fig = plt.figure() ax = fig.gca(projection='3d') ax.scatter3D(X[:, 0], X[:, 1], X[:, 2], cmap=plt.cm.viridis, linewidth=0.2) print("XD") pca = PCA() z = pca.fit_transform(data=X, k=2) plt.scatter(z[:, 0], z[:, 1], s=40) plt.xlabel("Z1") plt.ylabel("Z2") plt.title("Reduced dimension from 3D to 2D") plt.show()
import numpy as np from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA from PCA import PCA from Parser import get_data_set X_train, X_test, y_train, y_test = get_data_set('digits.data') pca_230 = PCA(230) train_transformed_230 = pca_230.fit_transform(X_train) test_transformed_230 = pca_230.transform(X_test) pca_30 = PCA(30) train_transformed_30 = pca_30.fit_transform(X_train) test_transformed_30 = pca_30.transform(X_test) PCA.plot_variance_for_k(X_train) prediction_non_transformed = LDA().fit(X_train, y_train).predict(X_test) score_non_transformed = np.mean(prediction_non_transformed == y_test) print('Score LDA without PCA: {}'.format(score_non_transformed)) prediction_transformed_230 = LDA().fit(train_transformed_230, y_train).predict(test_transformed_230) score_transformed_230 = np.mean(prediction_transformed_230 == y_test) print('Score LDA with PCA, k={}: {}'.format(230, score_transformed_230)) prediction_transformed_30 = LDA().fit(train_transformed_30, y_train).predict(test_transformed_30) score_transformed_30 = np.mean(prediction_transformed_30 == y_test) print('Score LDA with PCA, k={}: {}'.format(30, score_transformed_30))