You are here

class SparseVector in Recommender API 6.2

Same name and namespace in other branches
  1. 7.6 classes/Matrix.php \SparseVector

Sparse Vector takes care of missing data.

Hierarchy

Expanded class hierarchy of SparseVector

4 string references to 'SparseVector'
Matrix::row_vectors in ./Matrix.php
Only return the row vectors that have at least one element. Work for both RealMatrix and SparseMatrix
RecommenderMatrixTestCase::testVector in ./recommender.test
Vector::create in ./Matrix.php
Factory method to create a vector. Note, no parameter checking. Array index has to be [0..n), otherwise program unstable
Vector::wrap in ./Matrix.php
Factory method. Wrap the array of numbers into the vector. Note: passing by reference!

File

./Matrix.php, line 299

View source
class SparseVector extends Vector {
  function common_items(&$vector) {

    // for compatibility, we don't use pass by reference

    //$keys = array_intersect_key(&$this->values, &$vector->values);
    $keys = array_intersect_key($this->values, $vector->values);
    if (count($keys) == 0) {
      return NULL;
    }
    $array_a = array();
    $array_b = array();
    foreach ($keys as $key => $value) {
      $array_a[] = $this->values[$key];
      $array_b[] = $vector->values[$key];
    }
    $subset = array();
    $subset[] = Vector::wrap('RealVector', $array_a);
    $subset[] = Vector::wrap('RealVector', $array_b);
    return $subset;
  }
  function covariance(&$vector) {
    $subset = $this
      ->common_items($vector);
    return $subset === NULL ? NAN : $subset[0]
      ->covariance($subset[1]);
  }
  function correlation(&$vector) {
    $subset = $this
      ->common_items($vector);
    if ($subset === NULL) {
      return NAN;
    }
    $covariance = $subset[0]
      ->covariance($subset[1]);
    $std_a = $subset[0]
      ->std(TRUE);
    $std_b = $subset[1]
      ->std(TRUE);
    return $std_a == 0 || $std_b == 0 ? NAN : $covariance / ($std_a * $std_b);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
SparseVector::common_items function
SparseVector::correlation function Compute correlation with $vector. No caching option. Works for RealVector. SparseVector needs additional handling. Overrides Vector::correlation
SparseVector::covariance function Compute covariance with $vector. No caching option. Works for RealVector. SparseVector needs additional handling. Overrides Vector::covariance
Vector::$count protected property
Vector::$mean protected property
Vector::$std protected property
Vector::$values protected property
Vector::$variance protected property
Vector::count function Count the number of vectors. This works for SparseVector too. It only counts valid numbers, not the size the vector is supposed to be.
Vector::create static function Factory method to create a vector. Note, no parameter checking. Array index has to be [0..n), otherwise program unstable
Vector::get function
Vector::mean function Calculate the mean. This works for SparseMatrix too.
Vector::set function
Vector::std function
Vector::variance function Calculate the variance. This works for SparseMatrix too.
Vector::wrap static function Factory method. Wrap the array of numbers into the vector. Note: passing by reference!
Vector::__construct protected function