som-9.0: Self-Organising Maps.

Copyright (c) Amy de Buitléir 2012-2015 BSD-style amy@nualeargais.ie experimental portable Safe Haskell98

Data.Datamining.Pattern

Description

Tools for identifying patterns in data.

Synopsis

# Numbers as patterns

adjustNum :: (Num a, Ord a, Eq a) => a -> a -> a -> a Source

absDifference :: Num a => a -> a -> a Source

# Numeric vectors as patterns

## Raw vectors

adjustVector :: (Num a, Ord a, Eq a) => [a] -> a -> [a] -> [a] Source

`adjustVector target amount vector` adjusts each element of `vector` to move it closer to the corresponding element of `target`. The amount of adjustment is controlled by the learning rate `amount`, which is a number between 0 and 1. Larger values of `amount` permit more adjustment. If `amount`=1, the result will be identical to the `target`. If `amount`=0, the result will be the unmodified `pattern`. If `target` is shorter than `vector`, the result will be the same length as `target`. If `target` is longer than `vector`, the result will be the same length as `vector`.

adjustVectorPreserveLength :: (Num a, Ord a, Eq a) => [a] -> a -> [a] -> [a] Source

Same as `adjustVector`, except that the result will always be the same length as `vector`. This means that if `target` is shorter than `vector`, the "leftover" elements of `vector` will be copied the result, unmodified.

euclideanDistanceSquared :: Num a => [a] -> [a] -> a Source

Calculates the square of the Euclidean distance between two vectors.

magnitudeSquared :: Num a => [a] -> a Source

## Normalised vectors

A vector that has been normalised, i.e., the magnitude of the vector = 1.

Instances

 Show a => Show (NormalisedVector a) Source

normalise :: Floating a => [a] -> NormalisedVector a Source

Normalises a vector

## Scaled vectors

data ScaledVector a Source

A vector that has been scaled so that all elements in the vector are between zero and one. To scale a set of vectors, use `scaleAll`. Alternatively, if you can identify a maximum and minimum value for each element in a vector, you can scale individual vectors using `scale`.

Instances

 Show a => Show (ScaledVector a) Source

scale :: Fractional a => [(a, a)] -> [a] -> ScaledVector a Source

Given a vector `qs` of pairs of numbers, where each pair represents the maximum and minimum value to be expected at each index in `xs`, `scale qs xs` scales the vector `xs` element by element, mapping the maximum value expected at that index to one, and the minimum value to zero.

scaleAll :: (Fractional a, Ord a) => [[a]] -> [ScaledVector a] Source

Scales a set of vectors by determining the maximum and minimum values at each index in the vector, and mapping the maximum value to one, and the minimum value to zero.