Mercurial > repos > bgruening > sklearn_stacking_ensemble_models
annotate preprocessors.py @ 0:47467890f541 draft
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
| author | bgruening | 
|---|---|
| date | Wed, 15 May 2019 07:03:47 -0400 | 
| parents | |
| children | 
| rev | line source | 
|---|---|
| 0 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 1 """ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 2 Z_RandomOverSampler | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 3 """ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 4 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 5 import imblearn | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 6 import numpy as np | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 7 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 8 from collections import Counter | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 9 from imblearn.over_sampling.base import BaseOverSampler | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 10 from imblearn.over_sampling import RandomOverSampler | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 11 from imblearn.pipeline import Pipeline as imbPipeline | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 12 from imblearn.utils import check_target_type | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 13 from scipy import sparse | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 14 from sklearn.base import BaseEstimator, TransformerMixin | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 15 from sklearn.preprocessing.data import _handle_zeros_in_scale | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 16 from sklearn.utils import check_array, safe_indexing | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 17 from sklearn.utils.fixes import nanpercentile | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 18 from sklearn.utils.validation import (check_is_fitted, check_X_y, | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 19 FLOAT_DTYPES) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 20 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 21 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 22 class Z_RandomOverSampler(BaseOverSampler): | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 23 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 24 def __init__(self, sampling_strategy='auto', | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 25 return_indices=False, | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 26 random_state=None, | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 27 ratio=None, | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 28 negative_thres=0, | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 29 positive_thres=-1): | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 30 super(Z_RandomOverSampler, self).__init__( | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 31 sampling_strategy=sampling_strategy, ratio=ratio) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 32 self.random_state = random_state | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 33 self.return_indices = return_indices | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 34 self.negative_thres = negative_thres | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 35 self.positive_thres = positive_thres | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 36 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 37 @staticmethod | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 38 def _check_X_y(X, y): | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 39 y, binarize_y = check_target_type(y, indicate_one_vs_all=True) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 40 X, y = check_X_y(X, y, accept_sparse=['csr', 'csc'], dtype=None) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 41 return X, y, binarize_y | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 42 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 43 def _fit_resample(self, X, y): | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 44 n_samples = X.shape[0] | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 45 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 46 # convert y to z_score | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 47 y_z = (y - y.mean()) / y.std() | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 48 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 49 index0 = np.arange(n_samples) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 50 index_negative = index0[y_z > self.negative_thres] | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 51 index_positive = index0[y_z <= self.positive_thres] | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 52 index_unclassified = [x for x in index0 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 53 if x not in index_negative | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 54 and x not in index_positive] | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 55 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 56 y_z[index_negative] = 0 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 57 y_z[index_positive] = 1 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 58 y_z[index_unclassified] = -1 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 59 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 60 ros = RandomOverSampler( | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 61 sampling_strategy=self.sampling_strategy, | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 62 random_state=self.random_state, | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 63 ratio=self.ratio) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 64 _, _ = ros.fit_resample(X, y_z) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 65 sample_indices = ros.sample_indices_ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 66 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 67 print("Before sampler: %s. Total after: %s" | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 68 % (Counter(y_z), sample_indices.shape)) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 69 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 70 self.sample_indices_ = np.array(sample_indices) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 71 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 72 if self.return_indices: | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 73 return (safe_indexing(X, sample_indices), | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 74 safe_indexing(y, sample_indices), | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 75 sample_indices) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 76 return (safe_indexing(X, sample_indices), | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 77 safe_indexing(y, sample_indices)) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 78 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 79 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 80 def _get_quantiles(X, quantile_range): | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 81 """ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 82 Calculate column percentiles for 2d array | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 83 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 84 Parameters | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 85 ---------- | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 86 X : array-like, shape [n_samples, n_features] | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 87 """ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 88 quantiles = [] | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 89 for feature_idx in range(X.shape[1]): | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 90 if sparse.issparse(X): | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 91 column_nnz_data = X.data[ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 92 X.indptr[feature_idx]: X.indptr[feature_idx + 1]] | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 93 column_data = np.zeros(shape=X.shape[0], dtype=X.dtype) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 94 column_data[:len(column_nnz_data)] = column_nnz_data | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 95 else: | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 96 column_data = X[:, feature_idx] | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 97 quantiles.append(nanpercentile(column_data, quantile_range)) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 98 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 99 quantiles = np.transpose(quantiles) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 100 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 101 return quantiles | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 102 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 103 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 104 class TDMScaler(BaseEstimator, TransformerMixin): | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 105 """ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 106 Scale features using Training Distribution Matching (TDM) algorithm | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 107 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 108 References | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 109 ---------- | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 110 .. [1] Thompson JA, Tan J and Greene CS (2016) Cross-platform | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 111 normalization of microarray and RNA-seq data for machine | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 112 learning applications. PeerJ 4, e1621. | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 113 """ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 114 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 115 def __init__(self, q_lower=25.0, q_upper=75.0, ): | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 116 self.q_lower = q_lower | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 117 self.q_upper = q_upper | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 118 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 119 def fit(self, X, y=None): | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 120 """ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 121 Parameters | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 122 ---------- | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 123 X : array-like, shape [n_samples, n_features] | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 124 """ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 125 X = check_array(X, copy=True, estimator=self, dtype=FLOAT_DTYPES, | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 126 force_all_finite=True) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 127 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 128 if not 0 <= self.q_lower <= self.q_upper <= 100: | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 129 raise ValueError("Invalid quantile parameter values: " | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 130 "q_lower %s, q_upper: %s" | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 131 % (str(self.q_lower), str(self.q_upper))) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 132 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 133 # TODO sparse data | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 134 quantiles = nanpercentile(X, (self.q_lower, self.q_upper)) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 135 iqr = quantiles[1] - quantiles[0] | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 136 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 137 self.q_lower_ = quantiles[0] | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 138 self.q_upper_ = quantiles[1] | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 139 self.iqr_ = _handle_zeros_in_scale(iqr, copy=False) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 140 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 141 self.max_ = np.nanmax(X) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 142 self.min_ = np.nanmin(X) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 143 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 144 return self | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 145 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 146 def transform(self, X): | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 147 """ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 148 Parameters | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 149 ---------- | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 150 X : {array-like, sparse matrix} | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 151 The data used to scale along the specified axis. | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 152 """ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 153 check_is_fitted(self, 'iqr_', 'max_') | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 154 X = check_array(X, copy=True, estimator=self, dtype=FLOAT_DTYPES, | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 155 force_all_finite=True) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 156 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 157 # TODO sparse data | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 158 train_upper_scale = (self.max_ - self.q_upper_) / self.iqr_ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 159 train_lower_scale = (self.q_lower_ - self.min_) / self.iqr_ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 160 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 161 test_quantiles = nanpercentile(X, (self.q_lower, self.q_upper)) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 162 test_iqr = _handle_zeros_in_scale( | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 163 test_quantiles[1] - test_quantiles[0], copy=False) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 164 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 165 test_upper_bound = test_quantiles[1] + train_upper_scale * test_iqr | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 166 test_lower_bound = test_quantiles[0] - train_lower_scale * test_iqr | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 167 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 168 test_min = np.nanmin(X) | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 169 if test_lower_bound < test_min: | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 170 test_lower_bound = test_min | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 171 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 172 X[X > test_upper_bound] = test_upper_bound | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 173 X[X < test_lower_bound] = test_lower_bound | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 174 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 175 X = (X - test_lower_bound) / (test_upper_bound - test_lower_bound)\ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 176 * (self.max_ - self.min_) + self.min_ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 177 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 178 return X | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 179 | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 180 def inverse_transform(self, X): | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 181 """ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 182 Scale the data back to the original state | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 183 """ | 
| 
47467890f541
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/sklearn commit ab963ec9498bd05d2fb2f24f75adb2fccae7958c
 bgruening parents: diff
changeset | 184 raise NotImplementedError("Inverse transformation is not implemented!") | 
