Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
tianlh
LightGBM-DCU
Commits
a2f5c50c
Unverified
Commit
a2f5c50c
authored
Jan 29, 2019
by
Guolin Ke
Committed by
GitHub
Jan 29, 2019
Browse files
fix more edge cases in mape (#1977)
parent
b7e772b6
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
3 additions
and
0 deletions
+3
-0
src/objective/regression_objective.hpp
src/objective/regression_objective.hpp
+3
-0
No files found.
src/objective/regression_objective.hpp
View file @
a2f5c50c
...
@@ -9,6 +9,7 @@
...
@@ -9,6 +9,7 @@
namespace
LightGBM
{
namespace
LightGBM
{
#define PercentileFun(T, data_reader, cnt_data, alpha) {\
#define PercentileFun(T, data_reader, cnt_data, alpha) {\
if (cnt_data <= 1) { return data_reader(0); }\
std::vector<T> ref_data(cnt_data);\
std::vector<T> ref_data(cnt_data);\
for (data_size_t i = 0; i < cnt_data; ++i) {\
for (data_size_t i = 0; i < cnt_data; ++i) {\
ref_data[i] = data_reader(i);\
ref_data[i] = data_reader(i);\
...
@@ -36,6 +37,7 @@ namespace LightGBM {
...
@@ -36,6 +37,7 @@ namespace LightGBM {
}\
}\
#define WeightedPercentileFun(T, data_reader, weight_reader, cnt_data, alpha) {\
#define WeightedPercentileFun(T, data_reader, weight_reader, cnt_data, alpha) {\
if (cnt_data <= 1) { return data_reader(0); }\
std::vector<data_size_t> sorted_idx(cnt_data);\
std::vector<data_size_t> sorted_idx(cnt_data);\
for (data_size_t i = 0; i < cnt_data; ++i) {\
for (data_size_t i = 0; i < cnt_data; ++i) {\
sorted_idx[i] = i;\
sorted_idx[i] = i;\
...
@@ -48,6 +50,7 @@ namespace LightGBM {
...
@@ -48,6 +50,7 @@ namespace LightGBM {
}\
}\
double threshold = weighted_cdf[cnt_data - 1] * alpha;\
double threshold = weighted_cdf[cnt_data - 1] * alpha;\
size_t pos = std::upper_bound(weighted_cdf.begin(), weighted_cdf.end(), threshold) - weighted_cdf.begin();\
size_t pos = std::upper_bound(weighted_cdf.begin(), weighted_cdf.end(), threshold) - weighted_cdf.begin();\
pos = std::min(pos, static_cast<size_t>(cnt_data -1));\
if (pos == 0 || pos == static_cast<size_t>(cnt_data - 1)) {\
if (pos == 0 || pos == static_cast<size_t>(cnt_data - 1)) {\
return data_reader(sorted_idx[pos]);\
return data_reader(sorted_idx[pos]);\
}\
}\
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment