| 9 | } |
| 10 | |
| 11 | void TClassLabelOptions::Load(const NJson::TJsonValue& options) { |
| 12 | NCatboostOptions::CheckedLoad(options, &ClassLabelType, &ClassToLabel, &ClassLabels, &ClassesCount); |
| 13 | |
| 14 | if (!ClassLabels.Get().empty()) { |
| 15 | // compatibility with old "multiclass_params" without "class_label_type" |
| 16 | if (ClassLabelType == NCB::ERawTargetType::None) { |
| 17 | ClassLabelType = NCB::ERawTargetType::String; |
| 18 | } else if (ClassLabelType == NCB::ERawTargetType::Float) { |
| 19 | /* float values can be deserialized as JSON_INTEGER if they have 0 fractional part |
| 20 | * because JSON format does not distinguish between integer and float numeric types |
| 21 | * , fix this |
| 22 | */ |
| 23 | for (NJson::TJsonValue& classLabel : ClassLabels.Get()) { |
| 24 | if (classLabel.GetType() == NJson::JSON_INTEGER) { |
| 25 | classLabel = NJson::TJsonValue(double(classLabel.GetInteger())); |
| 26 | } |
| 27 | } |
| 28 | } |
| 29 | } |
| 30 | |
| 31 | Validate(); |
| 32 | } |
| 33 | |
| 34 | void TClassLabelOptions::Save(NJson::TJsonValue* options) const { |
| 35 | NCatboostOptions::SaveFields(options, ClassLabelType, ClassToLabel, ClassLabels, ClassesCount); |
nothing calls this directly
no test coverage detected