0 Star 0 Fork 0

魏士杰/outlier-detection-cpp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
detection.hpp 1.70 KB
一键复制 编辑 原始数据 按行查看 历史
魏士杰 提交于 2021-03-31 14:03 . first commit
#ifndef DETECTION_HPP
#define DETECTION_HPP
#include "svm_cxx.hpp"
template<typename data_type = double,
template<typename> class scaler_type = standard_scaler>
class detection {
scaler_type<data_type> user_scaler;
svm_cxx one_class_svm;
public:
detection(int feature_num, const std::string &model_filename, const std::string &scaler_filename) :
user_scaler(scaler_filename),
one_class_svm(feature_num, model_filename) {
}
std::pair<double,data_type> predict(std::vector<data_type> &data, bool trans = true) {
if (trans){
user_scaler.transform(data);
}
return std::move(one_class_svm.predict(data));
}
double validation(dataframe<data_type> &dataset, bool trans = true) {
if (trans && !dataset.get_scaler_flag()){
user_scaler.transform(dataset);
}
return one_class_svm.clf_validation(dataset);
}
void validation(const dataframe<data_type> &dataset, const std::string & filename, bool trans = true) {
std::vector<std::string> column_strs = dataset.get_column_str();
column_strs.emplace_back("result");
column_strs.emplace_back("dec_value");
dataframe<data_type> save_file(column_strs);
for (int i = 0; i < dataset.row_num(); ++i) {
std::vector<data_type> data = dataset[i].get_std_vector();
std::vector<data_type> data_backup = data;
std::pair<double,data_type> result = this->predict(data,trans);
data_backup.emplace_back(result.first);
data_backup.emplace_back(result.second);
save_file.append(data_backup);
}
save_file.to_csv(filename);
}
};
#endif //DETECTION_HPP
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/flamealpha/outlier-detection-cpp.git
git@gitee.com:flamealpha/outlier-detection-cpp.git
flamealpha
outlier-detection-cpp
outlier-detection-cpp
master

搜索帮助