def compress_img(img, percen): '''compress image with percent''' pca = PCA().fit(img) var_cumu = np.cumsum(pca.explained_variance_ratio_) * 100 k = np.argmax(var_cumu > percen) ipca = IncrementalPCA(n_components=k) img_compressed = ipca.fit_transform(img) list_att = ['components_', 'mean_', 'explained_variance_', 'whiten'] ipca_att = {} for att in list_att: ipca_att[att] = ipca.__getattribute__(att) return k, img_compressed, ipca_att