7namespace svm_classifier {
12 enum class KernelType {
22 enum class MulticlassStrategy {
30 enum class SVMLibrary {
38 enum class TrainingStatus {
64 TrainingStatus status = TrainingStatus::SUCCESS;
81 inline std::string kernel_type_to_string(KernelType kernel)
84 case KernelType::LINEAR:
return "linear";
85 case KernelType::RBF:
return "rbf";
86 case KernelType::POLYNOMIAL:
return "polynomial";
87 case KernelType::SIGMOID:
return "sigmoid";
88 default:
return "unknown";
95 inline KernelType string_to_kernel_type(
const std::string& kernel_str)
97 if (kernel_str ==
"linear")
return KernelType::LINEAR;
98 if (kernel_str ==
"rbf")
return KernelType::RBF;
99 if (kernel_str ==
"polynomial" || kernel_str ==
"poly")
return KernelType::POLYNOMIAL;
100 if (kernel_str ==
"sigmoid")
return KernelType::SIGMOID;
101 throw std::invalid_argument(
"Unknown kernel type: " + kernel_str);
107 inline std::string multiclass_strategy_to_string(MulticlassStrategy strategy)
110 case MulticlassStrategy::ONE_VS_REST:
return "ovr";
111 case MulticlassStrategy::ONE_VS_ONE:
return "ovo";
112 default:
return "unknown";
119 inline MulticlassStrategy string_to_multiclass_strategy(
const std::string& strategy_str)
121 if (strategy_str ==
"ovr" || strategy_str ==
"one_vs_rest") {
122 return MulticlassStrategy::ONE_VS_REST;
124 if (strategy_str ==
"ovo" || strategy_str ==
"one_vs_one") {
125 return MulticlassStrategy::ONE_VS_ONE;
127 throw std::invalid_argument(
"Unknown multiclass strategy: " + strategy_str);
133 inline SVMLibrary get_svm_library(KernelType kernel)
135 return (kernel == KernelType::LINEAR) ? SVMLibrary::LIBLINEAR : SVMLibrary::LIBSVM;
Model evaluation metrics.
double f1_score
Macro-averaged F1-score.
double recall
Macro-averaged recall.
std::vector< std::vector< int > > confusion_matrix
Confusion matrix.
double accuracy
Classification accuracy.
double precision
Macro-averaged precision.
Prediction result structure.
std::vector< int > predictions
Predicted class labels.
std::vector< std::vector< double > > decision_values
Decision function values.
std::vector< std::vector< double > > probabilities
Class probabilities (if available)
bool has_probabilities
Whether probabilities are available.
Training metrics structure.
double objective_value
Final objective value.
int support_vectors
Number of support vectors.
int iterations
Number of iterations.
double training_time
Training time in seconds.