def plot_component_variance(x, y): prim_basis = PrimitiveBasis(n_states=3, domain=[0, 2]) model = MKSHomogenizationModel(basis=prim_basis) model.n_components = 20 model.fit(x, y, periodic_axes=[0, 1]) # Draw the plot containing the PCA variance accumulation draw_component_variance(model.dimension_reducer.explained_variance_ratio_)
def plot_components(x, y, n_comps, linker_model, verbose=2): prim_basis = PrimitiveBasis(n_states=3, domain=[0, 2]) model = MKSHomogenizationModel(basis=prim_basis, property_linker=linker_model) model.n_components = 5 model.fit(x,y,periodic_axes=[0,1]) print model.property_linker.coef_ draw_components([model.reduced_fit_data[0:3, :2], model.reduced_fit_data[3:6, :2], model.reduced_fit_data[6:9, :2], model.reduced_fit_data[9:11, :2], model.reduced_fit_data[11:14, :2], model.reduced_fit_data[14:16, :2], model.reduced_fit_data[16:17, :2], model.reduced_fit_data[17:18, :2]], ['Ag:0.237 Cu:0.141 v:0.0525', 'Ag:0.237 Cu:0.141 v:0.0593', 'Ag:0.237 Cu:0.141 v:0.0773', 'Ag:0.237 Cu:0.141 v:0.0844', 'Ag:0.239 Cu:0.138 v:0.0791', 'Ag:0.239 Cu:0.138 v:0.0525', 'Ag:0.237 Cu:0.141 v:0.0914', 'Ag:0.237 Cu:0.141 v:0.0512'])
def test_n_components_change(): from pymks import MKSHomogenizationModel, DiscreteIndicatorBasis dbasis = DiscreteIndicatorBasis(n_states=2) model = MKSHomogenizationModel(basis=dbasis) model.n_components = 27 assert model.n_components == 27
# Get a representative slice from the block (or ave or whatever we decide on) best_slice = get_best_slice(metadatum['data']) # Get 2-pt Stats for the best slice print "--->Getting 2pt stats" metadatum['stats'] = get_correlations_for_slice(best_slice) print metadata[0]['stats'].shape # Construct X and Y for PCA and linkage print "-->Creating X and Y" i = 0 for metadatum in metadata: x[i,0:6*metadatum['x']**2] = metadatum['stats'].flatten() prim_basis = PrimitiveBasis(n_states=3, domain=[0,2]) x_ = prim_basis.discretize(metadata[0]['data']) x_corr = correlate(x_) draw_correlations(x_corr.real) quit() # Reduce all 2-pt Stats via PCA # Try linear reg on inputs and outputs reducer = PCA(n_components=3) linker = LinearRegression() model = MKSHomogenizationModel(dimension_reducer=reducer, property_linker=linker, compute_correlations=False) model.n_components = 40 model.fit(metadatum['stats'], y, periodic_axes=[0, 1]) print model.reduced_fit_data