rumale/spec/preprocessing/standard_scaler_spec.rb

29 lines
998 B
Ruby

require 'spec_helper'
RSpec.describe SVMKit::Preprocessing::StandardScaler do
let(:n_samples) { 10 }
let(:n_features) { 4 }
let(:samples) do
rng = Random.new(1)
rnd_vals = Array.new(n_samples * n_features) { rng.rand }
NMatrix.new([n_samples, n_features], rnd_vals, dtype: :float64, stype: :dense)
end
it 'performs standardization of samples.' do
normalizer = described_class.new
normalized = normalizer.fit_transform(samples)
mean_err = (normalized.mean(0) - NMatrix.zeros([1, n_features])).abs.sum(1)[0]
std_err = (normalized.std(0) - NMatrix.ones([1, n_features])).abs.sum(1)[0]
expect(mean_err).to be < 1.0e-8
expect(std_err).to be < 1.0e-8
end
it 'dumps and restores itself using Marshal module.' do
transformer = described_class.new
transformer.fit(samples)
copied = Marshal.load(Marshal.dump(transformer))
expect(transformer.mean_vec).to eq(copied.mean_vec)
expect(transformer.std_vec).to eq(copied.std_vec)
end
end