[mlpack-git] master, mlpack-1.0.x: Added and Modified more ToString methods. (d2bc75a)

gitdub at big.cc.gt.atl.ga.us gitdub at big.cc.gt.atl.ga.us
Thu Mar 5 21:42:00 EST 2015


Repository : https://github.com/mlpack/mlpack

On branches: master,mlpack-1.0.x
Link       : https://github.com/mlpack/mlpack/compare/904762495c039e345beba14c1142fd719b3bd50e...f94823c800ad6f7266995c700b1b630d5ffdcf40

>---------------------------------------------------------------

commit d2bc75a8d7f6c0dd6e9030de70b137d66937ffd7
Author: birm <birm at gatech.edu>
Date:   Wed Feb 5 19:33:26 2014 +0000

    Added and Modified more ToString methods.


>---------------------------------------------------------------

d2bc75a8d7f6c0dd6e9030de70b137d66937ffd7
 src/mlpack/methods/cf/cf.cpp                       | 11 +++
 src/mlpack/methods/cf/cf.hpp                       |  5 ++
 src/mlpack/methods/emst/dtb_impl.hpp               | 10 ++-
 src/mlpack/methods/fastmks/fastmks_impl.hpp        |  4 +-
 src/mlpack/methods/gmm/gmm_impl.hpp                | 17 ++++
 src/mlpack/methods/kernel_pca/kernel_pca.hpp       |  4 +
 src/mlpack/methods/kernel_pca/kernel_pca_impl.hpp  | 13 +++
 src/mlpack/methods/kmeans/kmeans.hpp               |  3 +
 src/mlpack/methods/kmeans/kmeans_impl.hpp          | 17 ++++
 src/mlpack/methods/lars/lars.cpp                   | 11 +++
 src/mlpack/methods/lars/lars.hpp                   |  3 +
 .../linear_regression/linear_regression.cpp        |  8 ++
 .../linear_regression/linear_regression.hpp        |  3 +
 src/mlpack/methods/local_coordinate_coding/lcc.hpp |  3 +
 .../methods/local_coordinate_coding/lcc_impl.hpp   | 10 +++
 .../logistic_regression/logistic_regression.hpp    |  3 +
 .../logistic_regression_impl.hpp                   | 10 +++
 src/mlpack/tests/to_string_test.cpp                | 93 +++++++++++++++++++++-
 18 files changed, 220 insertions(+), 8 deletions(-)

diff --git a/src/mlpack/methods/cf/cf.cpp b/src/mlpack/methods/cf/cf.cpp
index 8a962b3..e4caefe 100644
--- a/src/mlpack/methods/cf/cf.cpp
+++ b/src/mlpack/methods/cf/cf.cpp
@@ -260,6 +260,17 @@ void CF::InsertNeighbor(const size_t queryIndex,
   recommendations(pos, queryIndex) = neighbor;
 }
 
+// Return string of object.
+std::string CF::ToString() const
+{
+  std::ostringstream convert;
+  convert << "Collaborative Filtering [" << this << "]" << std::endl;
+  //convert << "  Number of Recommendations: " << numRecs << std::endl;
+  //convert << "  Number of Users for Similarity: " << numUsersForSimilarity;
+  //convert << std::endl;
+  //convert << "  Data: " << data.n_rows << "x" << data.n_cols << std::endl;
+  return convert.str();
+}
 
 }; // namespace mlpack
 }; // namespace cf
diff --git a/src/mlpack/methods/cf/cf.hpp b/src/mlpack/methods/cf/cf.hpp
index 47551c4..a48a370 100644
--- a/src/mlpack/methods/cf/cf.hpp
+++ b/src/mlpack/methods/cf/cf.hpp
@@ -167,6 +167,11 @@ class CF
                           arma::Col<size_t>& users, size_t num,
                           size_t neighbours);
 
+  /**
+   * Returns a string representation of this object.
+   */
+  std::string ToString() const;
+
  private:
   //! Number of recommendations.
   size_t numRecs;
diff --git a/src/mlpack/methods/emst/dtb_impl.hpp b/src/mlpack/methods/emst/dtb_impl.hpp
index 8b89ff4..07396eb 100644
--- a/src/mlpack/methods/emst/dtb_impl.hpp
+++ b/src/mlpack/methods/emst/dtb_impl.hpp
@@ -300,10 +300,12 @@ std::string DualTreeBoruvka<MetricType, TreeType>::ToString() const
 {
   std::ostringstream convert;
   convert << "Dual Tree Boruvka [" << this << "]" << std::endl;
-  //convert << "  Data: " << data.n_rows << "x" << data.n_cols <<std::endl;
-  //convert << "  Total Distance: " << totalDist <<std::endl;
-  //convert << "  Naive: " << naive << std::endl;
-  //convert << "  Metric" << metric << std::endl;
+  convert << "  Data: " << data.n_rows << "x" << data.n_cols <<std::endl;
+  convert << "  Total Distance: " << totalDist <<std::endl;
+  convert << "  Naive: " << naive << std::endl;
+  convert << "  Metric: " << std::endl;
+  convert << mlpack::util::Indent(mlpack::util::Indent(metric.ToString()));
+  convert << std::endl;
   return convert.str();
 }
 
diff --git a/src/mlpack/methods/fastmks/fastmks_impl.hpp b/src/mlpack/methods/fastmks/fastmks_impl.hpp
index 17bc189..313ebf2 100644
--- a/src/mlpack/methods/fastmks/fastmks_impl.hpp
+++ b/src/mlpack/methods/fastmks/fastmks_impl.hpp
@@ -308,7 +308,9 @@ std::string FastMKS<KernelType, TreeType>::ToString() const
   convert << "FastMKS [" << this << "]" << std::endl;
   convert << "  Naive: " << naive << std::endl;
   convert << "  Single: " << single << std::endl;
-  Log::Debug << "  Metric: " << metric << std::endl;
+  convert << "  Metric: " << std::endl;
+  convert << mlpack::util::Indent(mlpack::util::Indent(metric.ToString()));
+  convert << std::endl;
   return convert.str();
 }
 
diff --git a/src/mlpack/methods/gmm/gmm_impl.hpp b/src/mlpack/methods/gmm/gmm_impl.hpp
index f5d1c95..2ff2e25 100644
--- a/src/mlpack/methods/gmm/gmm_impl.hpp
+++ b/src/mlpack/methods/gmm/gmm_impl.hpp
@@ -480,7 +480,24 @@ template<typename FittingType>
 std::string GMM<FittingType>::ToString() const
 {
   std::ostringstream convert;
+  std::ostringstream data;
   convert << "GMM [" << this << "]" << std::endl;
+  convert << "  Gaussians: " << gaussians << std::endl;
+  convert << "  Dimensionality: "<<dimensionality;
+  convert << std::endl;
+  // Secondary ostringstream so things can be indented properly.
+  for (size_t ind=0; ind < gaussians; ind++)
+  {
+    data << "Means of Gaussian " << ind << ": " << std::endl << means[ind]; 
+    data << std::endl;
+    data << "Covariances of Gaussian " << ind << ": " << std::endl ;
+    data << covariances[ind] << std::endl;
+    data << "Weight of Gaussian " << ind << ": " << std::endl ;
+    data << weights[ind] << std::endl;
+  }
+
+  convert << util::Indent(data.str());
+
   return convert.str();
 }
 
diff --git a/src/mlpack/methods/kernel_pca/kernel_pca.hpp b/src/mlpack/methods/kernel_pca/kernel_pca.hpp
index 1eef627..98c23ca 100644
--- a/src/mlpack/methods/kernel_pca/kernel_pca.hpp
+++ b/src/mlpack/methods/kernel_pca/kernel_pca.hpp
@@ -91,6 +91,10 @@ class KernelPCA
   //! Return whether or not the transformed data is centered.
   bool& CenterTransformedData() { return centerTransformedData; }
 
+   
+  // Returns a string representation of this object. 
+  std::string ToString() const;
+
  private:
   //! The instantiated kernel.
   KernelType kernel;
diff --git a/src/mlpack/methods/kernel_pca/kernel_pca_impl.hpp b/src/mlpack/methods/kernel_pca/kernel_pca_impl.hpp
index c3d60cb..85f3464 100644
--- a/src/mlpack/methods/kernel_pca/kernel_pca_impl.hpp
+++ b/src/mlpack/methods/kernel_pca/kernel_pca_impl.hpp
@@ -120,6 +120,19 @@ void KernelPCA<KernelType>::GetKernelMatrix(const arma::mat& data,
       kernelMatrix(i, j) = kernelMatrix(j, i);
 }
 
+// Returns a String of the Object
+template <typename KernelType>
+std::string KernelPCA<KernelType>::ToString() const
+{
+  std::ostringstream convert;
+  convert << "KernelPCA [" << this << "]" << std::endl;
+  convert << "  Center Transformed: " << centerTransformedData <<std::endl;
+  convert << "  Kernel Type: " << std::endl;
+  convert <<  mlpack::util::Indent(mlpack::util::Indent(kernel.ToString()));
+  convert << std::endl;
+  return convert.str();
+}
+
 }; // namespace mlpack
 }; // namespace kpca
 
diff --git a/src/mlpack/methods/kmeans/kmeans.hpp b/src/mlpack/methods/kmeans/kmeans.hpp
index 2ef3e45..e070e5d 100644
--- a/src/mlpack/methods/kmeans/kmeans.hpp
+++ b/src/mlpack/methods/kmeans/kmeans.hpp
@@ -178,6 +178,9 @@ class KMeans
   //! Modify the empty cluster policy.
   EmptyClusterPolicy& EmptyClusterAction() { return emptyClusterAction; }
 
+  // Returns a string representation of this object. 
+  std::string ToString() const;
+
  private:
   //! Factor controlling how many clusters are actually found.
   double overclusteringFactor;
diff --git a/src/mlpack/methods/kmeans/kmeans_impl.hpp b/src/mlpack/methods/kmeans/kmeans_impl.hpp
index 5c7d26a..72c92d8 100644
--- a/src/mlpack/methods/kmeans/kmeans_impl.hpp
+++ b/src/mlpack/methods/kmeans/kmeans_impl.hpp
@@ -803,5 +803,22 @@ Cluster(const MatType& data,
   }
 }
 
+template<typename MetricType,
+         typename InitialPartitionPolicy,
+         typename EmptyClusterPolicy>
+std::string KMeans<MetricType,
+    InitialPartitionPolicy,
+    EmptyClusterPolicy>::ToString() const
+{
+  std::ostringstream convert;
+  convert << "KMeans [" << this << "]" << std::endl;
+  convert << "  Overclustering Factor: " << overclusteringFactor <<std::endl;
+  convert << "  Max Iterations: " << maxIterations <<std::endl;
+  convert << "  Metric: " << std::endl;
+  convert << mlpack::util::Indent(mlpack::util::Indent(metric.ToString()));
+  convert << std::endl;
+  return convert.str();
+}
+
 }; // namespace kmeans
 }; // namespace mlpack
diff --git a/src/mlpack/methods/lars/lars.cpp b/src/mlpack/methods/lars/lars.cpp
index 0dae4de..914d013 100644
--- a/src/mlpack/methods/lars/lars.cpp
+++ b/src/mlpack/methods/lars/lars.cpp
@@ -477,3 +477,14 @@ void LARS::CholeskyDelete(const size_t colToKill)
     matUtriCholFactor.shed_row(n);
   }
 }
+
+std::string LARS::ToString() const
+{
+  std::ostringstream convert;
+  convert << "LARS [" << this << "]" << std::endl;
+  convert << "  Gram Matrix: " << matGram.n_rows << "x" << matGram.n_cols;
+  convert << std::endl;
+  convert << "  Tolerance: " << tolerance << std::endl;
+  return convert.str();
+}
+
diff --git a/src/mlpack/methods/lars/lars.hpp b/src/mlpack/methods/lars/lars.hpp
index 1d1bce2..a0766c8 100644
--- a/src/mlpack/methods/lars/lars.hpp
+++ b/src/mlpack/methods/lars/lars.hpp
@@ -151,6 +151,9 @@ class LARS
   //! Access the upper triangular cholesky factor
   const arma::mat& MatUtriCholFactor() const { return matUtriCholFactor; }
 
+  // Returns a string representation of this object. 
+  std::string ToString() const;
+  
  private:
   //! Gram matrix.
   arma::mat matGramInternal;
diff --git a/src/mlpack/methods/linear_regression/linear_regression.cpp b/src/mlpack/methods/linear_regression/linear_regression.cpp
index 13f7cad..78cac92 100644
--- a/src/mlpack/methods/linear_regression/linear_regression.cpp
+++ b/src/mlpack/methods/linear_regression/linear_regression.cpp
@@ -120,3 +120,11 @@ double LinearRegression::ComputeError(const arma::mat& predictors,
 
   return cost;
 }
+
+std::string LinearRegression::ToString() const
+{
+  std::ostringstream convert;
+  convert << "Linear Regression [" << this << "]" << std::endl;
+  convert << "  Lambda: " << lambda << std::endl;
+  return convert.str();
+}
diff --git a/src/mlpack/methods/linear_regression/linear_regression.hpp b/src/mlpack/methods/linear_regression/linear_regression.hpp
index f9719c5..f908ba8 100644
--- a/src/mlpack/methods/linear_regression/linear_regression.hpp
+++ b/src/mlpack/methods/linear_regression/linear_regression.hpp
@@ -87,6 +87,9 @@ class LinearRegression
   //! Modify the Tikhonov regularization parameter for ridge regression.
   double& Lambda() { return lambda; }
 
+  // Returns a string representation of this object. 
+  std::string ToString() const;
+
  private:
   /**
    * The calculated B.
diff --git a/src/mlpack/methods/local_coordinate_coding/lcc.hpp b/src/mlpack/methods/local_coordinate_coding/lcc.hpp
index f11994d..7b3cd22 100644
--- a/src/mlpack/methods/local_coordinate_coding/lcc.hpp
+++ b/src/mlpack/methods/local_coordinate_coding/lcc.hpp
@@ -130,6 +130,9 @@ class LocalCoordinateCoding
   //! Modify the codes.
   arma::mat& Codes() { return codes; }
 
+  // Returns a string representation of this object. 
+  std::string ToString() const;
+
  private:
   //! Number of atoms in dictionary.
   size_t atoms;
diff --git a/src/mlpack/methods/local_coordinate_coding/lcc_impl.hpp b/src/mlpack/methods/local_coordinate_coding/lcc_impl.hpp
index 44c09d8..298d4d5 100644
--- a/src/mlpack/methods/local_coordinate_coding/lcc_impl.hpp
+++ b/src/mlpack/methods/local_coordinate_coding/lcc_impl.hpp
@@ -307,6 +307,16 @@ double LocalCoordinateCoding<DictionaryInitializer>::Objective(
   double froNormResidual = norm(data - dictionary * codes, "fro");
   return std::pow(froNormResidual, 2.0) + lambda * weightedL1NormZ;
 }
+template<typename DictionaryInitializer>
+std::string LocalCoordinateCoding<DictionaryInitializer>::ToString() const
+{
+  std::ostringstream convert;
+  convert << "Local Coordinate Coding [" << this << "]" << std::endl;
+  convert << "  Number of Atoms: " << atoms << std::endl;
+  convert << "  Data: " << data.n_rows << "x" << data.n_cols << std::endl;
+  convert << "  Lambda: " << lambda << std::endl;
+  return convert.str();
+}
 
 }; // namespace lcc
 }; // namespace mlpack
diff --git a/src/mlpack/methods/logistic_regression/logistic_regression.hpp b/src/mlpack/methods/logistic_regression/logistic_regression.hpp
index df1134d..f72f177 100644
--- a/src/mlpack/methods/logistic_regression/logistic_regression.hpp
+++ b/src/mlpack/methods/logistic_regression/logistic_regression.hpp
@@ -130,6 +130,9 @@ class LogisticRegression
   double ComputeError(const arma::mat& predictors,
                       const arma::vec& responses) const;
 
+  // Returns a string representation of this object. 
+  std::string ToString() const;
+
  private:
   //! Vector of trained parameters.
   arma::vec parameters;
diff --git a/src/mlpack/methods/logistic_regression/logistic_regression_impl.hpp b/src/mlpack/methods/logistic_regression/logistic_regression_impl.hpp
index 5487ca3..26b3991 100644
--- a/src/mlpack/methods/logistic_regression/logistic_regression_impl.hpp
+++ b/src/mlpack/methods/logistic_regression/logistic_regression_impl.hpp
@@ -124,6 +124,16 @@ double LogisticRegression<OptimizerType>::ComputeAccuracy(
   return (double) (count * 100) / responses.n_rows;
 }
 
+template <template<typename> class OptimizerType>
+std::string LogisticRegression<OptimizerType>::ToString() const
+{
+  std::ostringstream convert;
+  convert << "Logistic Regression [" << this << "]" << std::endl;
+  convert << "  Parameters: " << parameters.n_rows << std::endl;
+  convert << "  Lambda: " << lambda << std::endl;
+  return convert.str();
+}
+
 }; // namespace regression
 }; // namespace mlpack
 
diff --git a/src/mlpack/tests/to_string_test.cpp b/src/mlpack/tests/to_string_test.cpp
index 54c4cdf..70e195d 100644
--- a/src/mlpack/tests/to_string_test.cpp
+++ b/src/mlpack/tests/to_string_test.cpp
@@ -38,6 +38,13 @@
 #include <mlpack/methods/emst/dtb.hpp>
 #include <mlpack/methods/fastmks/fastmks.hpp>
 #include <mlpack/methods/gmm/gmm.hpp>
+#include <mlpack/methods/hmm/hmm.hpp>
+#include <mlpack/methods/kernel_pca/kernel_pca.hpp>
+#include <mlpack/methods/kmeans/kmeans.hpp>
+#include <mlpack/methods/lars/lars.hpp>
+#include <mlpack/methods/linear_regression/linear_regression.hpp>
+#include <mlpack/methods/local_coordinate_coding/lcc.hpp>
+#include <mlpack/methods/logistic_regression/logistic_regression.hpp>
 
 using namespace mlpack;
 using namespace mlpack::kernel;
@@ -236,13 +243,24 @@ BOOST_AUTO_TEST_CASE(BinSpaceString)
 /**
 BOOST_AUTO_TEST_CASE(CFString)
 { 
-  arma::mat c(10,10);
-  mlpack::cf::CF d(c);
+  size_t a = 1 ;
+  arma::mat c(3,3);
+  c(0, 0) = 0;
+  c(0, 1) = 1;
+  c(0, 2) = 1.5;
+  c(1, 0) = 1;
+  c(1, 1) = 2;
+  c(1, 2) = 2.0;
+  c(2, 0) = 0;
+  c(2, 1) = 2;
+  c(2, 2) = 0.7;
+  mlpack::cf::CF d(a,a,c);
   Log::Debug << d;
   std::string s = d.ToString();
   BOOST_REQUIRE_NE(s, "");
 }
 **/
+
 BOOST_AUTO_TEST_CASE(DetString)
 { 
   arma::mat c(4,4);
@@ -256,7 +274,7 @@ BOOST_AUTO_TEST_CASE(DetString)
 BOOST_AUTO_TEST_CASE(EmstString)
 {   
   arma::mat c(4,4);
-  c.randn(); 
+  c.randu();
   mlpack::emst::DualTreeBoruvka<> d(c);
   Log::Debug << d;
   std::string s = d.ToString();
@@ -283,4 +301,73 @@ BOOST_AUTO_TEST_CASE(GMMString)
   BOOST_REQUIRE_NE(s, "");
 }
 
+BOOST_AUTO_TEST_CASE(HMMString)
+{ 
+  mlpack::hmm::HMM<> d(5,4);
+  Log::Debug << d;
+  std::string s = d.ToString();
+  BOOST_REQUIRE_NE(s, "");
+}
+
+BOOST_AUTO_TEST_CASE(KPCAString)
+{ 
+  LinearKernel k;
+  mlpack::kpca::KernelPCA<LinearKernel> d(k,false);
+  Log::Debug << d;
+  std::string s = d.ToString();
+  BOOST_REQUIRE_NE(s, "");
+}
+
+BOOST_AUTO_TEST_CASE(KMeansString)
+{ 
+  mlpack::kmeans::KMeans<metric::ManhattanDistance> d(100, 4.0);
+  Log::Debug << d;
+  std::string s = d.ToString();
+  BOOST_REQUIRE_NE(s, "");
+}
+
+BOOST_AUTO_TEST_CASE(LarsString)
+{ 
+  mlpack::regression::LARS::LARS d(false);
+  Log::Debug << d;
+  std::string s = d.ToString();
+  BOOST_REQUIRE_NE(s, "");
+}
+
+BOOST_AUTO_TEST_CASE(LinRegString)
+{ 
+  arma::mat c(40,40);
+  arma::mat b(40,1);
+  c.randn();
+  b.randn();
+  mlpack::regression::LinearRegression::LinearRegression d(c,b);
+  Log::Debug << d;
+  std::string s = d.ToString();
+  BOOST_REQUIRE_NE(s, "");
+}
+
+BOOST_AUTO_TEST_CASE(LCCString)
+{ 
+  arma::mat c(40,40);
+  const size_t b=3;
+  const double a=1;
+  c.randn();
+  mlpack::lcc::LocalCoordinateCoding<> d(c,b,a);
+  Log::Debug << d;
+  std::string s = d.ToString();
+  BOOST_REQUIRE_NE(s, "");
+}
+
+BOOST_AUTO_TEST_CASE(LogRegString)
+{ 
+  arma::mat c(40,40);
+  arma::mat b(40,1);
+  c.randn();
+  b.randn();
+  mlpack::regression::LogisticRegression<> d(c,b);
+  Log::Debug << d;
+  std::string s = d.ToString();
+  BOOST_REQUIRE_NE(s, "");
+}
+
 BOOST_AUTO_TEST_SUITE_END();



More information about the mlpack-git mailing list