Class: Rumale::Preprocessing::StandardScaler

Inherits:
Base::Estimator show all
Includes:
Base::Transformer
Defined in:
rumale-preprocessing/lib/rumale/preprocessing/standard_scaler.rb

Overview

Normalize samples by centering and scaling to unit variance.

Examples:

require 'rumale/preprocessing/standard_scaler'

normalizer = Rumale::Preprocessing::StandardScaler.new
new_training_samples = normalizer.fit_transform(training_samples)
new_testing_samples = normalizer.transform(testing_samples)

Instance Attribute Summary collapse

Attributes inherited from Base::Estimator

#params

Instance Method Summary collapse

Constructor Details

#initializeStandardScaler

Create a new normalizer for centering and scaling to unit variance.



30
31
32
# File 'rumale-preprocessing/lib/rumale/preprocessing/standard_scaler.rb', line 30

def initialize # rubocop:disable Lint/UselessMethodDefinition
  super()
end

Instance Attribute Details

#mean_vecNumo::DFloat (readonly)

Return the vector consists of the mean value for each feature.

Returns:

  • (Numo::DFloat)

    (shape: [n_features])



23
24
25
# File 'rumale-preprocessing/lib/rumale/preprocessing/standard_scaler.rb', line 23

def mean_vec
  @mean_vec
end

#std_vecNumo::DFloat (readonly)

Return the vector consists of the standard deviation for each feature.

Returns:

  • (Numo::DFloat)

    (shape: [n_features])



27
28
29
# File 'rumale-preprocessing/lib/rumale/preprocessing/standard_scaler.rb', line 27

def std_vec
  @std_vec
end

Instance Method Details

#fit(x) ⇒ StandardScaler

Calculate the mean value and standard deviation of each feature for scaling.

Parameters:

  • x (Numo::DFloat)

    (shape: [n_samples, n_features]) The samples to calculate the mean values and standard deviations.

Returns:



41
42
43
44
45
46
47
# File 'rumale-preprocessing/lib/rumale/preprocessing/standard_scaler.rb', line 41

def fit(x, _y = nil)
  x = ::Rumale::Validation.check_convert_sample_array(x)

  @mean_vec = x.mean(0)
  @std_vec = x.stddev(0)
  self
end

#fit_transform(x) ⇒ Numo::DFloat

Calculate the mean values and standard deviations, and then normalize samples using them.

Parameters:

  • x (Numo::DFloat)

    (shape: [n_samples, n_features]) The samples to calculate the mean values and standard deviations.

Returns:

  • (Numo::DFloat)

    The scaled samples.



56
57
58
59
60
# File 'rumale-preprocessing/lib/rumale/preprocessing/standard_scaler.rb', line 56

def fit_transform(x, _y = nil)
  x = ::Rumale::Validation.check_convert_sample_array(x)

  fit(x).transform(x)
end

#transform(x) ⇒ Numo::DFloat

Perform standardization the given samples.

Parameters:

  • x (Numo::DFloat)

    (shape: [n_samples, n_features]) The samples to be scaled.

Returns:

  • (Numo::DFloat)

    The scaled samples.



66
67
68
69
70
71
# File 'rumale-preprocessing/lib/rumale/preprocessing/standard_scaler.rb', line 66

def transform(x)
  x = ::Rumale::Validation.check_convert_sample_array(x)

  n_samples, = x.shape
  (x - @mean_vec.tile(n_samples, 1)) / @std_vec.tile(n_samples, 1)
end