| 1044 | } |
| 1045 | |
| 1046 | static THashSet<float> GenerateMedianBorders( |
| 1047 | const TVector<float>& featureValues, const TMaybe<TVector<float>>& initialBorders, int maxBordersCount) { |
| 1048 | THashSet<float> result; |
| 1049 | ui64 total = featureValues.size(); |
| 1050 | if (total == 0 || featureValues.front() == featureValues.back()) { |
| 1051 | return result; |
| 1052 | } |
| 1053 | |
| 1054 | for (int i = 0; i < maxBordersCount; ++i) { |
| 1055 | ui64 i1 = (i + 1) * total / (maxBordersCount + 1); |
| 1056 | i1 = Min(i1, total - 1); |
| 1057 | float val1 = featureValues[i1]; |
| 1058 | if (val1 != featureValues[0]) { |
| 1059 | result.insert(RegularBorder(val1, featureValues, initialBorders)); |
| 1060 | } |
| 1061 | } |
| 1062 | return result; |
| 1063 | } |
| 1064 | |
| 1065 | static THashSet<float> GenerateMedianBordersWithDefaultValue( |
| 1066 | // must be sorted, featureValues must include it |
no test coverage detected