[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