// pad cols with zeros if ndims returned is less than ndims
if x_reduced[0].shape[1] < ndims:
for idx, x_r in enumerate(x_reduced):
x_reduced[idx] = np.hstack([x_r, np.zeros((x_r.shape[0], ndims-x_reduced[0].shape[1]))])
if align == True:
// Import is here to avoid circular imports with reduce.py
from .align import align as aligner
After Change
return [x_r[0]]
// dictionary of models
models = {
"PCA" : PCA,
"FastICA" : FastICA,
"TSNE" : TSNE,
"Isomap" : Isomap,
"SpectralEmbedding" : SpectralEmbedding,
"LocallyLinearEmbedding" : LocallyLinearEmbedding
}
// main
x = format_data(x)
assert all([i.shape[1]>ndims for i in x]), "In order to reduce the data, ndims must be less than the number of dimensions"
// if there are any nans in any of the lists, use ppca
if np.isnan(np.vstack(x)).any():
warnings.warn("Missing data: Inexact solution computed with PPCA (see https://github.com/allentran/pca-magic for details)")
x = fill_missing(x)
// normalize
if normalize:
x = normalizer(x, normalize=normalize)
// build model params dict
if model_params=={}:
model_params = {
"n_components" : ndims
}
elif "n_components" in model_params:
pass
else:
model_params["n_components"]=ndims
// reduce data
x_reduced = reduce_list(x, models[model], model_params)
if align == True:
// Import is here to avoid circular imports with reduce.py
from .align import align as aligner