In [1]:
%matplotlib inline
In [12]:
import pandas as pd
import numpy as np
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.preprocessing import StandardScaler
In [8]:
df = pd.read_excel('All_Isotopes_Generated.xlsx', 'Sheet1')
In [10]:
needed_isotopes = ['Reactor', 'Enrichment', 'u234', 'u235', 'u236', 'u238',
'pu238', 'pu239', 'pu240', 'pu241', 'pu242']
df = df[needed_isotopes]
In [18]:
# split data table into data X and class labels y
x = df.ix[:,2:].values
y = df.ix[:,0:2].values
#X_std = StandardScaler().fit_transform(X)
In [ ]:
In [4]:
ratios_combined_list = zip(df.u234, df.u235, df.u236, df.u238, df.pu238, df.pu239, df.pu240, df.pu241,
df.pu242)
In [11]:
for ix, data in df.groupby(['Reactor', 'Enrichment']):
ratios_combined_list = zip(data.u234, data.u235, data.u236, data.u238,
data.pu238, data.pu239, data.pu240, data.pu241,
data.pu242)
X = np.array(ratios_combined_list)
pca = PCA(n_components=9)
pca.fit(X)
print ix
print(pca.explained_variance_ratio_)
print pca.components_[0]
print
In [5]:
print(pca.explained_variance_ratio_)
In [6]:
print pca.components_[0]
In [ ]:
centers = [[1, 1], [-1, -1], [1, -1]]
fig = plt.figure(1, figsize=(4, 3))
plt.clf()
ax = Axes3D(fig, rect=[0, 0, .95, 1], elev=48, azim=134)
plt.cla()
X = pca.transform(X)
# for name, label in [('u234',0), ('u235',1), ('u236',2), ('u238',3),
# ('pu238',4), ('pu239',5), ('pu240',6), ('pu241',7),
# ('pu242',8)]:
# ax.text3D(X[y == label, 0].mean(),
# X[y == label, 1].mean() + 1.5,
# X[y == label, 2].mean(), name,
# horizontalalignment='center',
# bbox=dict(alpha=.5, edgecolor='w', facecolor='w'))
# Reorder the labels to have colors matching the cluster results
#y = np.choose(y, [1, 2, 0]).astype(np.float)
# ax.scatter(X[:, 0], X[:, 1], X[:, 2],
# X[:, 3], X[:, 4], X[:, 5],
# X[:, 6], X[:, 7], X[:, 8],
# c=y, cmap=plt.cm.spectral)
x_surf = [X[:, 0].min(), X[:, 0].max(),
X[:, 0].min(), X[:, 0].max()]
y_surf = [X[:, 0].max(), X[:, 0].max(),
X[:, 0].min(), X[:, 0].min()]
x_surf = np.array(x_surf)
y_surf = np.array(y_surf)
v0 = pca.transform(pca.components_[0])
v0 /= v0[-1]
v1 = pca.transform(pca.components_[1])
v1 /= v1[-1]
ax.w_xaxis.set_ticklabels([])
ax.w_yaxis.set_ticklabels([])
ax.w_zaxis.set_ticklabels([])
plt.show()
In [ ]: