def PCA_analysis(data, mode, cell_stages = None):
"""Principal Component Analysis.
"""
assert mode in {'pca', 'pca2'}
mean_shifter = StandardScaler(with_std = False)
if mode == 'pca':
pca = PCA(min(data.shape))
projected_data = pca.fit_transform(data)
projected_data = pca.fit_transform(mean_shifter.fit_transform(data))
components = pca.components_
else:
assert isinstance(cell_stages, np.ndarray)
idx = np.where(cell_stages == np.max(cell_stages))[0]
pca = PCA(min(idx.size, data.shape[1]))
pca.fit(mean_shifter.fit_transform(data[idx]))
components = pca.components_
projected_data = np.dot(data, components.T)
return components, projected_data
评论列表
文章目录