SHOGUN
3.2.1
首页
相关页面
模块
类
文件
文件列表
文件成员
全部
类
命名空间
文件
函数
变量
类型定义
枚举
枚举值
友元
宏定义
组
页
src
shogun
evaluation
MeanSquaredLogError.cpp
浏览该文件的文档.
1
/*
2
* This program is free software; you can redistribute it and/or modify
3
* it under the terms of the GNU General Public License as published by
4
* the Free Software Foundation; either version 3 of the License, or
5
* (at your option) any later version.
6
*
7
* Written (W) 2012 Heiko Strathmann
8
* Copyright (C) 2012 Berlin Institute of Technology and Max-Planck-Society
9
*/
10
11
#include <
shogun/evaluation/MeanSquaredLogError.h
>
12
#include <
shogun/labels/Labels.h
>
13
#include <
shogun/labels/RegressionLabels.h
>
14
#include <
shogun/mathematics/Math.h
>
15
16
using namespace
shogun;
17
18
float64_t
CMeanSquaredLogError::evaluate
(
CLabels
* predicted,
CLabels
* ground_truth)
19
{
20
ASSERT
(predicted && ground_truth)
21
ASSERT
(predicted->
get_num_labels
()==ground_truth->
get_num_labels
())
22
ASSERT
(predicted->
get_label_type
()==
LT_REGRESSION
)
23
ASSERT
(ground_truth->
get_label_type
()==
LT_REGRESSION
)
24
25
int32_t length=predicted->
get_num_labels
();
26
float64_t
msle=0.0;
27
for
(int32_t i=0; i<length; i++)
28
{
29
float64_t
prediction=((
CRegressionLabels
*) predicted)->get_label(i);
30
float64_t
truth=((
CRegressionLabels
*) ground_truth)->get_label(i);
31
32
if
(prediction<=-1.0 || truth<=-1.0)
33
{
34
SG_WARNING
(
"Negative label[%d] in %s is not allowed, ignoring!\n"
,
35
i,
get_name
());
36
continue
;
37
}
38
39
float64_t
a=
CMath::log
(prediction+1);
40
float64_t
b=
CMath::log
(truth+1);
41
msle+=
CMath::sq
(a-b);
42
}
43
msle /= length;
44
return
CMath::sqrt
(msle);
45
}
SHOGUN
机器学习工具包 - 项目文档