-
Notifications
You must be signed in to change notification settings - Fork 0
/
example.py
121 lines (95 loc) · 3.44 KB
/
example.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import unittest
import numpy as np
import random
import matplotlib.pyplot as plt
from matplotlib.pyplot import scatter
import csv
from sklearn.decomposition import PCA
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# I will use these later, it is easier if I put them here:
A1 = 1.0 # amplitude of peak1
X1 = 250 # center
W1 = 50 # gaussian width
A2 = 1.0 # same for peak 2
X2 = 600
W2 = 50
skipPlots = False # It is annoying to have to press 'q' to dismiss the plots
# if you set this to false, then any test with plots will not run.
# Run tests in order they are written
unittest.TestLoader.sortTestMethodsUsing = None
class TestPCA(unittest.TestCase):
def test01PCAIsImportingProperly(self):
# Is my module installed properly at least?
pca = PCA()
self.assertIsNotNone(pca)
def testRead(self):
with open('ex1.csv', newline='') as f:
reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE)
for row in reader:
pass#print(row)
def dataset(self, filepath):
dataset = np.array()
with open(filepath, newline='') as f:
reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE)
for row in reader:
data = []
for x in row:
data.append(float(x))
dataset.append(data)
return np.array(dataset)
# def testEx1(self):
# pca = PCA(n_components=3, whiten=False)
# dataset = self.dataset('ex1.csv')
# pca.fit(dataset)
# # print(np.array(dataset).shape)
# # print(pca.explained_variance_ratio_)
# # print(pca.components_)
# pcaW = PCA(n_components=3, whiten=True)
# dataset = self.dataset('ex1.csv')
# pcaW.fit(dataset)
# plt.plot(pca.components_.T)
# plt.plot(pcaW.components_.T)
# plt.show()
def testPCA(self):
pca = PCA(n_components=3, whiten=True)
dataset = self.dataset('pca.csv')
pca.fit(dataset)
# print(np.array(dataset).shape)
# print(pca.explained_variance_ratio_)
# print(pca.components_)
plt.plot(pca.components_.T)
plt.show()
def test2D(self):
pca = PCA(n_components=3, whiten=True)
dataset = self.dataset('pca.csv')
normData = (dataset-np.mean(dataset,axis=0))/np.std(dataset,axis=0)
pca.fit(normData)
for student in normData:
plt.plot(student[0],student[3],'ko')
plt.show()
def test3D(self):
pca = PCA(n_components=3, whiten=True)
dataset = self.dataset('pca.csv')
pca.fit(dataset)
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
for student in dataset:
ax.scatter(student[0],student[1],student[2], marker='o')
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
def testPCANorm(self):
pca = PCA(n_components=3)
dataset = self.dataset('ex1.csv')
print(dataset,np.mean(dataset,axis=1))
normData = (dataset-np.mean(dataset,axis=0))/np.std(dataset,axis=0)
pca.fit(dataset)
# print(np.array(dataset).shape)
# print(pca.explained_variance_ratio_)
# print(pca.components_)
plt.plot(pca.components_.T)
plt.show()
if __name__ == '__main__':
unittest.main()