[mlpack-git] master: Add serialization to DecisionStump. (c20bcdc)
gitdub at big.cc.gt.atl.ga.us
gitdub at big.cc.gt.atl.ga.us
Mon Nov 30 17:24:19 EST 2015
Repository : https://github.com/mlpack/mlpack
On branch : master
Link : https://github.com/mlpack/mlpack/compare/10b9d45b806a3e879b0564d78ccb183ebc7051ba...31c557d9cc7e4da57fd8a246085c19e076d12271
>---------------------------------------------------------------
commit c20bcdcd29750a4a814dc72aff13dc46304018ae
Author: Ryan Curtin <ryan at ratml.org>
Date: Sat Nov 21 01:40:34 2015 +0000
Add serialization to DecisionStump.
>---------------------------------------------------------------
c20bcdcd29750a4a814dc72aff13dc46304018ae
.../methods/decision_stump/decision_stump.hpp | 11 +++++++
.../methods/decision_stump/decision_stump_impl.hpp | 34 ++++++++++++++++++++++
2 files changed, 45 insertions(+)
diff --git a/src/mlpack/methods/decision_stump/decision_stump.hpp b/src/mlpack/methods/decision_stump/decision_stump.hpp
index 10099b9..a9cc605 100644
--- a/src/mlpack/methods/decision_stump/decision_stump.hpp
+++ b/src/mlpack/methods/decision_stump/decision_stump.hpp
@@ -60,6 +60,13 @@ class DecisionStump
const arma::rowvec& weights);
/**
+ * Create a decision stump without training. This stump will not be useful
+ * and will always return a class of 0 for anything that is to be classified,
+ * so it would be a prudent idea to call Train() after using this constructor.
+ */
+ DecisionStump();
+
+ /**
* Train the decision stump on the given data. This completely overwrites any
* previous training data, so after training the stump may be completely
* different.
@@ -99,6 +106,10 @@ class DecisionStump
//! Modify the labels for each split bin (be careful!).
arma::Col<size_t>& BinLabels() { return binLabels; }
+ //! Serialize the decision stump.
+ template<typename Archive>
+ void Serialize(Archive& ar, const unsigned int /* version */);
+
private:
//! The number of classes (we must store this for boosting).
size_t classes;
diff --git a/src/mlpack/methods/decision_stump/decision_stump_impl.hpp b/src/mlpack/methods/decision_stump/decision_stump_impl.hpp
index c052063..446ce2e 100644
--- a/src/mlpack/methods/decision_stump/decision_stump_impl.hpp
+++ b/src/mlpack/methods/decision_stump/decision_stump_impl.hpp
@@ -35,6 +35,21 @@ DecisionStump<MatType>::DecisionStump(const MatType& data,
}
/**
+ * Empty constructor.
+ */
+template<typename MatType>
+DecisionStump<MatType>::DecisionStump() :
+ classes(1),
+ bucketSize(0),
+ splitAttribute(0),
+ split(1),
+ binLabels(1)
+{
+ split[0] = DBL_MAX;
+ binLabels[0] = 0;
+}
+
+/**
* Train on the given data and labels.
*/
template<typename MatType>
@@ -157,6 +172,25 @@ DecisionStump<MatType>::DecisionStump(const DecisionStump<>& other,
}
/**
+ * Serialize the decision stump.
+ */
+template<typename MatType>
+template<typename Archive>
+void DecisionStump<MatType>::Serialize(Archive& ar,
+ const unsigned int /* version */)
+{
+ using data::CreateNVP;
+
+ // This is straightforward; just serialize all of the members of the class.
+ // None need special handling.
+ ar & CreateNVP(classes, "classes");
+ ar & CreateNVP(bucketSize, "bucketSize");
+ ar & CreateNVP(splitAttribute, "splitAttribute");
+ ar & CreateNVP(split, "split");
+ ar & CreateNVP(binLabels, "binLabels");
+}
+
+/**
* Sets up attribute as if it were splitting on it and finds entropy when
* splitting on attribute.
*
More information about the mlpack-git
mailing list