20 using namespace shogun;
21 using namespace Eigen;
30 REQUIRE(sigma>0.0,
"Standard deviation must be greater than zero\n")
35 void CGaussianLikelihood::init()
51 SG_SERROR(
"Provided likelihood is not of type CGaussianLikelihood!\n")
67 Map<VectorXd> eigen_result(result.
vector, result.
vlen);
69 eigen_result=eigen_result.array()+
CMath::sq(m_sigma);
78 REQUIRE(lab,
"Labels are required (lab should not be NULL)\n")
80 "Labels must be type of CRegressionLabels\n")
82 "length of the function vector\n")
87 Map<VectorXd> eigen_result(result.
vector, result.
vlen);
93 eigen_result=eigen_y-eigen_f;
94 eigen_result=-eigen_result.cwiseProduct(eigen_result)/(2*
CMath::sq(m_sigma))-
104 REQUIRE(lab,
"Labels are required (lab should not be NULL)\n")
106 "Labels must be type of CRegressionLabels\n")
108 "length of the function vector\n")
109 REQUIRE(i>=1 && i<=3,
"Index for derivative should be 1, 2 or 3\n")
111 Map<VectorXd> eigen_f(func.
vector, func.
vlen);
114 Map<VectorXd> eigen_result(result.
vector, result.
vlen);
120 eigen_result=eigen_y-eigen_f;
126 eigen_result=-VectorXd::Ones(result.
vlen)/
CMath::sq(m_sigma);
128 eigen_result=VectorXd::Zero(result.
vlen);
136 REQUIRE(lab,
"Labels are required (lab should not be NULL)\n")
138 "Labels must be type of CRegressionLabels\n")
140 "length of the function vector\n")
142 Map<VectorXd> eigen_f(func.
vector, func.
vlen);
145 Map<VectorXd> eigen_result(result.
vector, result.
vlen);
147 if (strcmp(param->
m_name,
"sigma"))
155 eigen_result=eigen_y-eigen_f;
156 eigen_result=eigen_result.cwiseProduct(eigen_result)/
CMath::sq(m_sigma);
157 eigen_result-=VectorXd::Ones(result.
vlen);
165 REQUIRE(lab,
"Labels are required (lab should not be NULL)\n")
167 "Labels must be type of CRegressionLabels\n")
169 "length of the function vector\n")
171 if (strcmp(param->
m_name,
"sigma"))
174 Map<VectorXd> eigen_f(func.
vector, func.
vlen);
177 Map<VectorXd> eigen_result(result.
vector, result.
vlen);
184 eigen_result=2*(eigen_f-eigen_y)/
CMath::sq(m_sigma);
192 REQUIRE(lab,
"Labels are required (lab should not be NULL)\n")
194 "Labels must be type of CRegressionLabels\n")
196 "length of the function vector\n")
198 if (strcmp(param->
m_name,
"sigma"))
201 Map<VectorXd> eigen_f(func.
vector, func.
vlen);
204 Map<VectorXd> eigen_result(result.
vector, result.
vlen);
208 eigen_result=2*VectorXd::Ones(result.
vlen)/
CMath::sq(m_sigma);
221 "Length of the vector of means (%d), length of the vector of "
222 "variances (%d) and number of labels (%d) should be the same\n",
225 "Labels must be type of CRegressionLabels\n")
232 "length of the vector of variances (%d) should be the same\n",
245 Map<VectorXd> eigen_result(result.
vector, result.
vlen);
248 eigen_s2=eigen_s2.array()+
CMath::sq(m_sigma);
249 eigen_result=-(eigen_y-eigen_mu).array().square()/(2.0*eigen_s2.array())-
250 (2.0*
CMath::PI*eigen_s2.array()).log()/2.0;
259 REQUIRE(lab,
"Labels are required (lab should not be NULL)\n")
261 "Length of the vector of means (%d), length of the vector of "
262 "variances (%d) and number of labels (%d) should be the same\n",
264 REQUIRE(i>=0 && i<=mu.
vlen,
"Index (%d) out of bounds!\n", i)
266 "Labels must be type of CRegressionLabels\n")
280 REQUIRE(lab,
"Labels are required (lab should not be NULL)\n")
282 "Length of the vector of means (%d), length of the vector of "
283 "variances (%d) and number of labels (%d) should be the same\n",
285 REQUIRE(i>=0 && i<=mu.
vlen,
"Index (%d) out of bounds!\n", i)
287 "Labels must be type of CRegressionLabels\n")