pub struct RandomProjectionCodec {
    pub seed: u64,
    pub reduction: RandomProjectionReduction,
    pub projection: RandomProjectionKind,
}
Expand description

Codec that uses random projections to reduce the dimensionality of high- dimensional data to compress it.

A two-dimensional array of shape N x D is encoded as n array of shape N x K, where K is either set explicitly or chosen using the the Johnson- Lindenstrauss lemma. For K to be smaller than D, D must be quite large. Therefore, this codec should only applied on large datasets as it otherwise significantly inflates the data size instead of reducing it.

Choosing a lower distortion rate epsilon will improve the quality of the lossy compression, i.e. reduce the compression error, at the cost of increasing K.

This codec only supports finite floating point data.

Fields§

§seed: u64

Seed for generating the random projection matrix

§reduction: RandomProjectionReduction

Method with which the reduced dimensionality K is selected

§projection: RandomProjectionKind

Projection kind that is used to generate the random projection matrix

Trait Implementations§

source§

impl Clone for RandomProjectionCodec

source§

fn clone(&self) -> RandomProjectionCodec

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Codec for RandomProjectionCodec

source§

type Error = RandomProjectionCodecError

Error type that may be returned during encodeing and decodeing.
source§

fn encode(&self, data: AnyCowArray<'_>) -> Result<AnyArray, Self::Error>

Encodes the data and returns the result. Read more
source§

fn decode(&self, encoded: AnyCowArray<'_>) -> Result<AnyArray, Self::Error>

Decodes the encoded data and returns the result. Read more
source§

fn decode_into( &self, encoded: AnyArrayView<'_>, decoded: AnyArrayViewMut<'_>, ) -> Result<(), Self::Error>

Decodes the encoded data and writes the result into the provided decoded output. Read more
source§

impl<'de> Deserialize<'de> for RandomProjectionCodec

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl JsonSchema for RandomProjectionCodec

source§

fn schema_name() -> Cow<'static, str>

The name of the generated JSON Schema. Read more
source§

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type. Read more
source§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
§

fn always_inline_schema() -> bool

Whether JSON Schemas generated for this type should be included directly in parent schemas, rather than being re-used where possible using the $ref keyword. Read more
source§

impl Serialize for RandomProjectionCodec

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl StaticCodec for RandomProjectionCodec

source§

const CODEC_ID: &'static str = "random-projection"

Codec identifier.
source§

type Config<'de> = RandomProjectionCodec

Configuration type, from which the codec can be created infallibly. Read more
source§

fn from_config(config: Self::Config<'_>) -> Self

Instantiate a codec from its configuration.
source§

fn get_config(&self) -> StaticCodecConfig<'_, Self>

Get the configuration for this codec. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> DynClone for T
where T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

source§

impl<T> DynCodec for T
where T: StaticCodec,

source§

type Type = StaticCodecType<T>

Type object type for this codec.
source§

fn ty(&self) -> <T as DynCodec>::Type

Returns the type object for this codec.
source§

fn get_config<S>( &self, serializer: S, ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where S: Serializer,

Serializes the configuration parameters for this codec. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,