diff --git a/src/shogun/regression/gp/GaussianLikelihood.cpp b/src/shogun/regression/gp/GaussianLikelihood.cpp index 65232a7e38f..d97907afc76 100644 --- a/src/shogun/regression/gp/GaussianLikelihood.cpp +++ b/src/shogun/regression/gp/GaussianLikelihood.cpp @@ -24,13 +24,15 @@ CGaussianLikelihood::CGaussianLikelihood() : CLikelihoodModel() CGaussianLikelihood::CGaussianLikelihood(float64_t sigma) : CLikelihoodModel() { + REQUIRE(sigma>0.0, "%s::CGaussianLikelihood(): Standard deviation " + "must be greater than zero\n", get_name()) init(); m_sigma=sigma; } void CGaussianLikelihood::init() { - m_sigma = 1; + m_sigma=1.0; SG_ADD(&m_sigma, "sigma", "Observation Noise.", MS_AVAILABLE); } diff --git a/src/shogun/regression/gp/GaussianLikelihood.h b/src/shogun/regression/gp/GaussianLikelihood.h index 1b0f562a60c..92c9928a4b1 100644 --- a/src/shogun/regression/gp/GaussianLikelihood.h +++ b/src/shogun/regression/gp/GaussianLikelihood.h @@ -25,7 +25,6 @@ namespace shogun */ class CGaussianLikelihood: public CLikelihoodModel { - public: /** Constructor*/ CGaussianLikelihood(); @@ -48,13 +47,18 @@ class CGaussianLikelihood: public CLikelihoodModel * * @return noise variance */ - float64_t get_sigma() {return m_sigma;} + float64_t get_sigma() { return m_sigma; } /** Sets the noise variance * - * @param s noise variance + * @param sigma noise variance */ - void set_sigma(float64_t s) {m_sigma = s;} + void set_sigma(float64_t sigma) + { + REQUIRE(sigma>0.0, "%s::set_sigma(): Standard deviation " + "must be greater than zero\n", get_name()) + m_sigma=sigma; + } /** helper method used to specialize a base class instance * @@ -81,7 +85,7 @@ class CGaussianLikelihood: public CLikelihoodModel * * @return model type Gaussian */ - virtual ELikelihoodModelType get_model_type() {return LT_GAUSSIAN;} + virtual ELikelihoodModelType get_model_type() { return LT_GAUSSIAN; } /** get log likelihood log(P(y|f)) with respect * to location f @@ -164,10 +168,9 @@ class CGaussianLikelihood: public CLikelihoodModel /** Observation noise sigma */ float64_t m_sigma; - /*Initialize function*/ + /** Initialize function */ void init(); }; - } #endif /* HAVE_EIGEN3 */ #endif /* CGAUSSIANLIKELIHOOD_H_ */ diff --git a/src/shogun/regression/gp/LikelihoodModel.h b/src/shogun/regression/gp/LikelihoodModel.h index 6ddbe3a6f9b..8b7ee83f231 100644 --- a/src/shogun/regression/gp/LikelihoodModel.h +++ b/src/shogun/regression/gp/LikelihoodModel.h @@ -14,7 +14,6 @@ #include #include - namespace shogun { @@ -26,7 +25,6 @@ enum ELikelihoodModelType LT_STUDENTST = 20 }; - /** @brief The Likelihood Model base class. * * The Likelihood model computes approximately the @@ -36,9 +34,7 @@ enum ELikelihoodModelType */ class CLikelihoodModel : public CSGObject { - public: - /*Constructor*/ CLikelihoodModel(); @@ -70,7 +66,7 @@ class CLikelihoodModel : public CSGObject * * @return model type NONE */ - virtual ELikelihoodModelType get_model_type() {return LT_NONE;} + virtual ELikelihoodModelType get_model_type() { return LT_NONE; } /** get log likelihood log(P(y|f)) with respect * to location f @@ -83,7 +79,6 @@ class CLikelihoodModel : public CSGObject virtual float64_t get_log_probability_f(CRegressionLabels* labels, SGVector f) = 0; - /** get derivative of log likelihood log(P(y|f)) with respect * to location f * @@ -150,8 +145,6 @@ class CLikelihoodModel : public CSGObject virtual SGVector get_third_derivative(CRegressionLabels* labels, TParameter* param, CSGObject* obj, SGVector function) = 0; }; - - } #endif /* HAVE_EIGEN3 */ #endif /* CLIKELIHOODMODEL_H_ */ diff --git a/src/shogun/regression/gp/StudentsTLikelihood.cpp b/src/shogun/regression/gp/StudentsTLikelihood.cpp index 8d7984eda48..248f883a256 100644 --- a/src/shogun/regression/gp/StudentsTLikelihood.cpp +++ b/src/shogun/regression/gp/StudentsTLikelihood.cpp @@ -25,21 +25,24 @@ using namespace Eigen; CStudentsTLikelihood::CStudentsTLikelihood() : CLikelihoodModel() { - init(0.01, 3); + init(); } CStudentsTLikelihood::CStudentsTLikelihood(float64_t sigma, float64_t df) : CLikelihoodModel() { - init(sigma, df); -} - -void CStudentsTLikelihood::init(float64_t sigma, float64_t df) -{ - REQUIRE(df>1.0, "%s::init(): Number of degrees of " + REQUIRE(sigma>0.0, "%s::CStudentsTLikelihood(): Standard deviation " + "must be greater than zero\n", get_name()) + REQUIRE(df>1.0, "%s::CStudentsTLikelihood(): Number of degrees of " "freedom must be greater than one\n", get_name()) + init(); + m_sigma=sigma; m_df=df; - m_sigma = sigma; +} +void CStudentsTLikelihood::init() +{ + m_sigma=1.0; + m_df=3.0; SG_ADD(&m_df, "df", "Degrees of Freedom.", MS_AVAILABLE); SG_ADD(&m_sigma, "sigma", "Observation Noise.", MS_AVAILABLE); } diff --git a/src/shogun/regression/gp/StudentsTLikelihood.h b/src/shogun/regression/gp/StudentsTLikelihood.h index efbc98c3189..83a8c504fdf 100644 --- a/src/shogun/regression/gp/StudentsTLikelihood.h +++ b/src/shogun/regression/gp/StudentsTLikelihood.h @@ -27,9 +27,7 @@ namespace shogun */ class CStudentsTLikelihood: public CLikelihoodModel { - public: - /** default constructor */ CStudentsTLikelihood(); @@ -54,19 +52,24 @@ class CStudentsTLikelihood: public CLikelihoodModel * * @return noise variance */ - float64_t get_sigma() {return m_sigma;} + float64_t get_sigma() { return m_sigma; } /** Sets the noise variance * - * @param s noise variance + * @param sigma noise variance */ - void set_sigma(float64_t s) {m_sigma = s;} + void set_sigma(float64_t sigma) + { + REQUIRE(sigma>0.0, "%s::set_sigma(): Standard deviation " + "must be greater than zero\n", get_name()) + m_sigma=sigma; + } /** get degrees of freedom * * @return degrees of freedom */ - float64_t get_degrees_freedom() {return m_df;} + float64_t get_degrees_freedom() { return m_df; } /** sets degrees of freedom * @@ -104,8 +107,7 @@ class CStudentsTLikelihood: public CLikelihoodModel * * @return model type Student's T */ - virtual ELikelihoodModelType get_model_type() {return LT_STUDENTST;} - + virtual ELikelihoodModelType get_model_type() { return LT_STUDENTST; } /** get log likelihood log(P(y|f)) with respect * to location f @@ -118,7 +120,6 @@ class CStudentsTLikelihood: public CLikelihoodModel virtual float64_t get_log_probability_f(CRegressionLabels* labels, SGVector f); - /** get derivative of log likelihood log(P(y|f)) with respect * to location f * @@ -192,11 +193,9 @@ class CStudentsTLikelihood: public CLikelihoodModel /** Degrees of Freedom */ float64_t m_df; - /** Initialize function*/ - void init(float64_t sigma, float64_t df); - + /** Initialize function */ + void init(); }; - } #endif /* HAVE_EIGEN3 */ #endif /* CStudentsTLIKELIHOOD_H_ */