package org.algorithm.test;

import org.algorithm.core.neural.dataset.NNDataSetImpl;

import java.util.HashMap;
import java.util.Map;

/**
 * @Author: bijl
 * @Date: 2019/9/23 10:49
 * @Description:
 */
public class TestDiagnosisFilter {

    public static void main(String[] args) {
        NNDataSetImpl dataSet = new NNDataSetImpl("diagnosisPredict.version");

        dataSet.readFilterDiagnosisDict();  // 读取过滤表
//        鼻炎|0|2|outpatient_556_IOE_1
//        肺癌|1|2|outpatient_556_IOE_1
//        胃肠炎|2|2|outpatient_556_IOE_1
//        屈光不正|3|2|outpatient_556_IOE_1
        // 构造方式：去查dictionaries.bin文件中outpatient_556_IOE_1，相关的疾病，形如上
        float[][] predict = {{0.1f, 0.2f, 0.3f, 0.4f}};

        // 构造输入
        Map<String, Map<String, String>> inputs = new HashMap<>();
        Map<String, String> featureMap = new HashMap<>();
        featureMap.put("negative", "有");
        featureMap.put("property", "11");

        // 构造方式：去查filter_diagnoses.bin文件中与上述疾病相关的一个或多个特征，加入
        inputs.put("上腹压痛", featureMap);  // 上腹压痛，只与，胃肠炎，相关
        // 保存输入
        dataSet.storeFeatureNames(inputs);

        // 过滤疾病
        Map<String, Float> result = dataSet.wrapAndFilter(predict);
        Map<String, Float> result_no_filter = dataSet.basicWrap(predict);

        System.out.println("无疾病过滤：" + result_no_filter);  // 期望输出 {鼻炎=0.1, 肺癌=0.2, 胃肠炎=0.3, 屈光不正=0.4}
        System.out.println("疾病过滤：" + result);  // 期望输出{胃肠炎=0.3}


    }
}
