예제 #1
0
def check(in_file='.dat'):

    res = load_data(in_file)
    print(res)
    best_res, mid_res = res
    best1, outs1 = mid_res

    best_avg_auc = -1
    for out in outs1[0]:
        if np.mean(out['auc']) > best_avg_auc:
            best_avg_auc = np.mean(out['auc'])
            best_results = copy.deepcopy(out)

    print('\n', best_avg_auc, best_results)

    return out
예제 #2
0
def check(in_file='.dat'):

    res = load_data(in_file)
    # print(res)
    best_res, mid_res = res

    # best1: (file_name),
    # outs1: [n_repeats][all_middle_res(tuning res)]
    best1, outs1 = mid_res

    best_avg_auc = -1
    for out in outs1[0]:
        if np.mean(out['auc']) > best_avg_auc:
            best_avg_auc = np.mean(out['auc'])
            best_results = copy.deepcopy(out)

    print('\n', best_avg_auc, best_results)

    return outs1
예제 #3
0
def dat2xlxs(in_file, out_file):
    results = load_data(in_file)

    new_results = {}
    # methods_mapping = {
    #     'detector_name_OCSVM-gs_True-kjl_False-quickshift_False-meanshift_False-nystrom_False': 'OCSVM',
    #     # 'detector_name_GMM-covariance_type_full-gs_True-kjl_False-meanshift_False-quickshift_False-nystrom_False':'GMM-full',
    #     # 'detector_name_GMM-covariance_type_diag-gs_True-kjl_False-meanshift_False-quickshift_False-nystrom_False':'GMM-diag',
    #     # 'detector_name_GMM-covariance_type_full-gs_True-kjl_True-meanshift_False-quickshift_False-nystrom_False':'GMM-full-kjl',
    #     # 'detector_name_GMM-covariance_type_diag-gs_True-kjl_True-meanshift_False-quickshift_False-nystrom_False':'GMM-diag-kjl',
    #     # 'detector_name_GMM-covariance_type_full-gs_True-kjl_False-meanshift_False-quickshift_False-nystrom_True': 'GMM-full-nystrom',
    #     # 'detector_name_GMM-covariance_type_diag-gs_True-kjl_False-meanshift_False-quickshift_False-nystrom_True': 'GMM-diag-nystrom',
    #     # 'detector_name_GMM-covariance_type_full-gs_True-kjl_True-meanshift_False-quickshift_True-nystrom_False': 'GMM-full-kjl-quickshift',
    #     # 'detector_name_GMM-covariance_type_diag-gs_True-kjl_True-meanshift_False-quickshift_True-nystrom_False': 'GMM-diag-kjl-quickshift',
    #     # 'detector_name_GMM-covariance_type_full-gs_True-kjl_True-meanshift_True-quickshift_False-nystrom_False': 'GMM-full-kjl-meanshift',
    #     # 'detector_name_GMM-covariance_type_diag-gs_True-kjl_True-meanshift_True-quickshift_False-nystrom_False': 'GMM-diag-kjl-meanshift',
    #
    #     'detector_name_GMM-covariance_type_full-gs_True-kjl_False-nystrom_False-quickshift_False-meanshift_False': 'GMM-full',
    #     'detector_name_GMM-covariance_type_diag-gs_True-kjl_False-nystrom_False-quickshift_False-meanshift_False': 'GMM-diag',
    #     'detector_name_GMM-covariance_type_full-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False': 'GMM-full-kjl',
    #     'detector_name_GMM-covariance_type_diag-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False': 'GMM-diag-kjl',
    #     'detector_name_GMM-covariance_type_full-gs_True-kjl_False-nystrom_True-quickshift_False-meanshift_False': 'GMM-full-nystrom',
    #     'detector_name_GMM-covariance_type_diag-gs_True-kjl_False-nystrom_True-quickshift_False-meanshift_False': 'GMM-diag-nystrom',
    #     'detector_name_GMM-covariance_type_full-gs_True-kjl_True-meanshift_False-quickshift_True-nystrom_False': 'GMM-full-kjl-quickshift',
    #     'detector_name_GMM-covariance_type_diag-gs_True-kjl_True-meanshift_False-quickshift_True-nystrom_False': 'GMM-diag-kjl-quickshift',
    #     'detector_name_GMM-covariance_type_full-gs_True-kjl_True-meanshift_True-quickshift_False-nystrom_False': 'GMM-full-kjl-meanshift',
    #     'detector_name_GMM-covariance_type_diag-gs_True-kjl_True-meanshift_True-quickshift_False-nystrom_False': 'GMM-diag-kjl-meanshift',
    #
    # }

    GMM_covariance_type = 'diag'
    methods_mapping = {
        'case1': 'OCSVM',
        'case2': f'GMM-{GMM_covariance_type}',
        'case3': f'GMM-{GMM_covariance_type}-kjl',
        'case4': f'GMM-{GMM_covariance_type}-nystrom',
        'case5': f'GMM-{GMM_covariance_type}-kjl-quickshift',
        'case6': f'GMM-{GMM_covariance_type}-kjl-meanshift',
    }

    with ExcelWriter(out_file) as writer:

        for sheet_name in ['OCSVM']:
            values = []
            for i, ((data_key, method_key), (best_values, mid_values)) in enumerate(results.items()):

                if methods_mapping[method_key] != sheet_name:
                    continue

                print(f'\n\n----{i}, {sheet_name}')
                try:
                    header = 5
                    X_train_shape = best_values['X_train_shape']
                    X_test_shape = best_values['X_test_shape']
                    aucs = best_values['aucs']
                    train_times = best_values['train_times']
                    test_times = best_values['test_times']
                    aucs_str = "-".join([str(v) for v in aucs])
                    train_times_str = "-".join([str(v) for v in train_times])
                    test_times_str = "-".join([str(v) for v in test_times])
                    params = best_values['params']
                    _suffex = ''

                    line = f'{data_key}, {X_train_shape}, {X_test_shape}, => aucs:{aucs_str}, train_times:{train_times_str}, test_times:{test_times_str}, with params: {params}: {_suffex}'
                    values.append(line)
                    pd.DataFrame(values).to_excel(writer, sheet_name, index=False, header=False)

                    startrow = len(values) + 5
                    _each_total_rows = len(values) + 5


                except Exception as e:
                    traceback.print_exc()
                    values = [sheet_name]
                    values.extend([] * _each_total_rows)

            writer.save()

    return out_file
예제 #4
0
def dat2xlxs_new(in_file, out_file, models=None):
    results = load_data(in_file)

    try:
        for model_name, vs in results.items():
            if 'GMM' in model_name:
                if 'full' in model_name:
                    GMM_covariance_type = 'full'
                elif 'diag' in model_name:
                    GMM_covariance_type = 'diag'
                else:
                    msg = model_name
                    raise NotImplementedError(msg)
    except Exception as e:
        print(f'e: {e}')
        GMM_covariance_type = 'diag'

    with ExcelWriter(out_file) as writer:

        for i, sheet_name in enumerate(models):
            values = []
            _each_total_rows = 0
            is_file_header = True
            if sheet_name not in results.keys():
                continue
            res_ = results[sheet_name]
            for j, vs in enumerate(res_):
                print(
                    f'----i={i}, j={j}, sheet_name:{sheet_name}, model_name: {sheet_name}, {vs}'
                )
                try:
                    if is_file_header:
                        header = 5
                        # the first 5 rows are empty for writing configurations
                        values.extend([[] for i in range(header)])
                        values.append([sheet_name])
                        is_file_header = False

                    data_key = vs[0]
                    try:
                        X_train_shape = vs[2].split(
                            'X_train_shape:')[-1].split('|')[0]
                        X_train_shape = f'{X_train_shape}'.replace(',', '-')

                        X_val_shape = vs[2].split('X_val_shape:')[-1]
                        X_val_shape = f'{X_val_shape}'.replace(',', '-')

                        X_test_shape = vs[3].split('X_test_shape:')[-1]
                        X_test_shape = f'{X_test_shape}'.replace(',', '-')
                        aucs = vs[7].split(":")[-1]
                        train_times = vs[8].split(":")[-1]
                        test_times = vs[9].split(":")[-1]
                        space_sizes = vs[12].split(":")[-1]
                        # aucs_str = "-".join([str(v) for v in aucs])
                        # train_times_str = "-".join([str(v) for v in train_times])
                        # test_times_str = "-".join([str(v) for v in test_times])
                        # space_sizes_str = "-".join([str(v) for v in space_sizes])
                        params = vs[13:]

                        # n_comps = [int(v['GMM_n_components']) for v in best_values['params']]
                        # mu_n_comp = np.mean(n_comps)
                        # std_n_comp = np.std(n_comps)
                        # n_comp_str = '-'.join([str(v) for v in n_comps])
                        # n_comp_str = f'{n_comp_str}|(u_std) {mu_n_comp:.2f}+/-{std_n_comp:.2f}'
                        n_comp_str = vs[10].split(":")[-1]
                        _suffex = f', n_comps_arr: {n_comp_str}'
                        line = f'{data_key}, {sheet_name}, {X_train_shape}|{X_val_shape}, {X_test_shape}, ' \
                               f'auc: u+/-std, , , ' \
                               f'=> aucs:{aucs}, train_times:{train_times}, test_times:{test_times}, ' \
                               f'space_sizes: {space_sizes}, with params: {params}: {_suffex}'
                    except Exception as e:
                        # n_comp_str = f'error-{e}'
                        # _suffex = f', n_comps_arr: {n_comp_str}'
                        line = f'{data_key}, {sheet_name}, X_train_shape|X_val_shape, X_test_shape, ' \
                               f'auc: u+/-std, , , ' \
                               f'=> aucs:, train_times:, test_times:, ' \
                               f'space_sizes: , with params: : '

                    values.append(line.split(','))
                    pd.DataFrame(values).to_excel(writer,
                                                  sheet_name,
                                                  index=False,
                                                  header=False)

                    startrow = len(values) + 5
                    _each_total_rows = len(values) + 5

                except Exception as e:
                    traceback.print_exc()
                    values = [sheet_name]
                    values.extend([] * _each_total_rows)

        # once call write.save(), it will close the file
        writer.save()

    return out_file
예제 #5
0
def dat2xlxs(
    in_file,
    out_file,
):
    results = load_data(in_file)

    new_results = {}
    # methods_mapping = {
    #     'detector_name_OCSVM-gs_True-kjl_False-quickshift_False-meanshift_False-nystrom_False': 'OCSVM',
    #     # 'detector_name_GMM-covariance_type_full-gs_True-kjl_False-meanshift_False-quickshift_False-nystrom_False':'GMM-full',
    #     # 'detector_name_GMM-covariance_type_diag-gs_True-kjl_False-meanshift_False-quickshift_False-nystrom_False':'GMM-diag',
    #     # 'detector_name_GMM-covariance_type_full-gs_True-kjl_True-meanshift_False-quickshift_False-nystrom_False':'GMM-full-kjl',
    #     # 'detector_name_GMM-covariance_type_diag-gs_True-kjl_True-meanshift_False-quickshift_False-nystrom_False':'GMM-diag-kjl',
    #     # 'detector_name_GMM-covariance_type_full-gs_True-kjl_False-meanshift_False-quickshift_False-nystrom_True': 'GMM-full-nystrom',
    #     # 'detector_name_GMM-covariance_type_diag-gs_True-kjl_False-meanshift_False-quickshift_False-nystrom_True': 'GMM-diag-nystrom',
    #     # 'detector_name_GMM-covariance_type_full-gs_True-kjl_True-meanshift_False-quickshift_True-nystrom_False': 'GMM-full-kjl-quickshift',
    #     # 'detector_name_GMM-covariance_type_diag-gs_True-kjl_True-meanshift_False-quickshift_True-nystrom_False': 'GMM-diag-kjl-quickshift',
    #     # 'detector_name_GMM-covariance_type_full-gs_True-kjl_True-meanshift_True-quickshift_False-nystrom_False': 'GMM-full-kjl-meanshift',
    #     # 'detector_name_GMM-covariance_type_diag-gs_True-kjl_True-meanshift_True-quickshift_False-nystrom_False': 'GMM-diag-kjl-meanshift',
    #
    #     'detector_name_GMM-covariance_type_full-gs_True-kjl_False-nystrom_False-quickshift_False-meanshift_False': 'GMM-full',
    #     'detector_name_GMM-covariance_type_diag-gs_True-kjl_False-nystrom_False-quickshift_False-meanshift_False': 'GMM-diag',
    #     'detector_name_GMM-covariance_type_full-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False': 'GMM-full-kjl',
    #     'detector_name_GMM-covariance_type_diag-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False': 'GMM-diag-kjl',
    #     'detector_name_GMM-covariance_type_full-gs_True-kjl_False-nystrom_True-quickshift_False-meanshift_False': 'GMM-full-nystrom',
    #     'detector_name_GMM-covariance_type_diag-gs_True-kjl_False-nystrom_True-quickshift_False-meanshift_False': 'GMM-diag-nystrom',
    #     'detector_name_GMM-covariance_type_full-gs_True-kjl_True-meanshift_False-quickshift_True-nystrom_False': 'GMM-full-kjl-quickshift',
    #     'detector_name_GMM-covariance_type_diag-gs_True-kjl_True-meanshift_False-quickshift_True-nystrom_False': 'GMM-diag-kjl-quickshift',
    #     'detector_name_GMM-covariance_type_full-gs_True-kjl_True-meanshift_True-quickshift_False-nystrom_False': 'GMM-full-kjl-meanshift',
    #     'detector_name_GMM-covariance_type_diag-gs_True-kjl_True-meanshift_True-quickshift_False-nystrom_False': 'GMM-diag-kjl-meanshift',
    #
    # }

    try:
        GMM_covariance_type = \
        [_best_res['params'][-1]['GMM_covariance_type'] for (data_name_file, case), (_best_res, _mid_res) in
         results.items() if 'GMM_covariance_type' in _best_res['params'][-1].keys()][0]
    except Exception as e:
        print(f'e: {e}')
        GMM_covariance_type = 'diag'

    methods_mapping = {
        'case1': 'OCSVM(rbf)',
        'case1_2': 'KJL-OCSVM(linear)',
        'case1_3': 'Nystrom-OCSVM(linear)',
        'case2': f'GMM({GMM_covariance_type})',
        'case3': f'KJL-GMM({GMM_covariance_type})',
        'case4': f'Nystrom-GMM({GMM_covariance_type})',
        'case5': f'KJL-QS-GMM({GMM_covariance_type})',
        'case6': f'KJL-MS-GMM({GMM_covariance_type})',
        'case7': f'Nystrom-QS-GMM({GMM_covariance_type})',
        'case8': f'Nystrom-MS-GMM({GMM_covariance_type})',
    }
    methods_mapping = OrderedDict(methods_mapping)

    with ExcelWriter(out_file) as writer:

        for i, sheet_name in enumerate(methods_mapping.values()):
            values = []
            _each_total_rows = 0
            is_header = True
            for j, ((data_key, method_key),
                    (best_values, mid_values)) in enumerate(results.items()):

                if methods_mapping[method_key] != sheet_name:
                    continue

                print(
                    f'----i={i}, j={j}, sheet_name:{sheet_name}, data_key: {data_key}'
                )
                try:
                    if is_header:
                        header = 5
                        # the first 5 rows are empty for writing configurations
                        values.extend([[] for i in range(header)])
                        values.append([method_key])
                        is_header = False

                    X_train_shape = best_values['X_train_shape']
                    X_train_shape = f'{X_train_shape}'.replace(',', '-')
                    try:
                        X_val_shape = best_values['X_val_shape']
                        X_val_shape = f'{X_val_shape}'.replace(',', '-')
                    except Exception as e:
                        X_val_shape = f'(-)'
                    X_test_shape = best_values['X_test_shape']
                    X_test_shape = f'{X_test_shape}'.replace(',', '-')
                    aucs = best_values['aucs']
                    train_times = best_values['train_times']
                    test_times = best_values['test_times']
                    space_sizes = best_values['space_sizes']
                    aucs_str = "-".join([str(v) for v in aucs])
                    train_times_str = "-".join([str(v) for v in train_times])
                    test_times_str = "-".join([str(v) for v in test_times])
                    space_sizes_str = "-".join([str(v) for v in space_sizes])
                    params = best_values['params'][-1]

                    try:
                        n_comps = [
                            int(v['GMM_n_components'])
                            for v in best_values['params']
                        ]
                        mu_n_comp = np.mean(n_comps)
                        std_n_comp = np.std(n_comps)
                        n_comp_str = '-'.join([str(v) for v in n_comps])
                        n_comp_str = f'{n_comp_str}|(u_std) {mu_n_comp:.2f}+/-{std_n_comp:.2f}'
                    except Exception as e:
                        n_comp_str = f'error-{e}'
                    _suffex = f', n_comps_arr: {n_comp_str}'
                    line = f'{data_key}, {method_key}, {X_train_shape}|{X_val_shape}, {X_test_shape}, ' \
                           f'auc: u+/-std, , , ' \
                           f'=> aucs:{aucs_str}, train_times:{train_times_str}, test_times:{test_times_str}, ' \
                           f'space_sizes: {space_sizes_str}, with params: {params}: {_suffex}'
                    values.append(line.split(','))
                    pd.DataFrame(values).to_excel(writer,
                                                  sheet_name,
                                                  index=False,
                                                  header=False)

                    startrow = len(values) + 5
                    _each_total_rows = len(values) + 5

                except Exception as e:
                    traceback.print_exc()
                    values = [sheet_name]
                    values.extend([] * _each_total_rows)

        # once call write.save(), it will close the file
        writer.save()

    return out_file
예제 #6
0
def main():
    data_mapping = {
        # 'DS10_UNB_IDS/DS11-srcIP_192.168.10.5':'UNB_PC1',
        'DS10_UNB_IDS/DS12-srcIP_192.168.10.8': 'UNB_PC2',
        'DS10_UNB_IDS/DS13-srcIP_192.168.10.9': 'UNB_PC3',
        'DS10_UNB_IDS/DS14-srcIP_192.168.10.14': 'UNB_PC4',
        'DS10_UNB_IDS/DS15-srcIP_192.168.10.15': 'UNB_PC5',

        # 'DS20_PU_SMTV/DS21-srcIP_10.42.0.1':'SMTV',
        # # #
        'DS40_CTU_IoT/DS41-srcIP_10.0.2.15': 'CTU',
        'DS40_CTU_IoT/DS42-srcIP_192.168.1.196': 'CTU',
        #
        # 'DS50_MAWI_WIDE/DS51-srcIP_202.171.168.50':'MAWI',
        # 'DS50_MAWI_WIDE/DS51-srcIP_202.171.168.50',
        'DS50_MAWI_WIDE/DS52-srcIP_203.78.7.165': 'MAWI_PC2',
        # 'DS50_MAWI_WIDE/DS53-srcIP_203.78.4.32':'MAWI_PC3',
        # 'DS50_MAWI_WIDE/DS54-srcIP_222.117.214.171':'MAWI_PC4',
        # 'DS50_MAWI_WIDE/DS55-srcIP_101.27.14.204':'MAWI_PC5',
        # 'DS50_MAWI_WIDE/DS56-srcIP_18.178.219.109':'MAWI_PC6',

        'ISTS/2015': 'ISTS',
        'MACCDC/2012': 'MACCDC',

        # 'DS60_UChi_IoT/DS61-srcIP_192.168.143.20':'GHom',
        'DS60_UChi_IoT/DS62-srcIP_192.168.143.42': 'SCam',
        # 'DS60_UChi_IoT/DS63-srcIP_192.168.143.43':'SFrig',
        # 'DS60_UChi_IoT/DS64-srcIP_192.168.143.48':'BSTCH',

    }

    datasets = [
        #     # # # 'DS10_UNB_IDS/DS11-srcIP_192.168.10.5',
        'DS10_UNB_IDS/DS12-srcIP_192.168.10.8',
        #     # 'DS10_UNB_IDS/DS13-srcIP_192.168.10.9',
        #     # 'DS10_UNB_IDS/DS14-srcIP_192.168.10.14',
        #     # 'DS10_UNB_IDS/DS15-srcIP_192.168.10.15',
        #     # # # # #
        #     # # # # 'DS20_PU_SMTV/DS21-srcIP_10.42.0.1',
        #     # # # # # #
        #     'DS40_CTU_IoT/DS41-srcIP_10.0.2.15',
        'DS40_CTU_IoT/DS42-srcIP_192.168.1.196',
        #     # # #
        #     # # # # 'DS50_MAWI_WIDE/DS51-srcIP_202.171.168.50',
        #     # 'DS50_MAWI_WIDE/DS51-srcIP_202.171.168.50',
        'DS50_MAWI_WIDE/DS52-srcIP_203.78.7.165',
        #     # 'DS50_MAWI_WIDE/DS53-srcIP_203.78.4.32',
        #     # 'DS50_MAWI_WIDE/DS54-srcIP_222.117.214.171',
        #     # 'DS50_MAWI_WIDE/DS55-srcIP_101.27.14.204',
        #     # 'DS50_MAWI_WIDE/DS56-srcIP_18.178.219.109',
        #     # #
        #     # # #
        #     # 'WRCCDC/2020-03-20',
        #     # 'DEFCON/ctf26',
        'ISTS/2015',
        'MACCDC/2012',

        #     # # # # 'DS60_UChi_IoT/DS61-srcIP_192.168.143.20',
        'DS60_UChi_IoT/DS62-srcIP_192.168.143.42',
        #     # # # 'DS60_UChi_IoT/DS63-srcIP_192.168.143.43',
        #     # # # 'DS60_UChi_IoT/DS64-srcIP_192.168.143.48'
        #

    ]
    # dataset_name = datasets[0]

    for dataset_name in datasets:
        print(f'\n\n***dataset_name: {dataset_name}')
        # data_type = 'all_results'
        data_type = 'middle_results'
        if data_type == 'all_results':
            in_file = 'out/data_kjl/all_results.dat'
            results = load_data(in_file)
            print(results)
        elif data_type == 'middle_results':
            if 'DS10_UNB_IDS/DS12-srcIP_192.168.10.8' in dataset_name:
                in_file = f'out/data_kjl/{dataset_name}/iat_size/header:False/' \
                          'detector_name_GMM-covariance_type_full-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False.csv-middle_results.dat'
                params = {'file_name': dataset_name,
                          'detector': 'detector_name_GMM-covariance_type_full-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False',
                          'n_components': 5,
                          'q': 0.4,
                          'd': 10,
                          'n': 100
                          }

            elif 'DS40_CTU_IoT/DS42-srcIP_192.168.1.196' in dataset_name:
                in_file = f'out/data_kjl/{dataset_name}/iat_size/header:False/' \
                          'detector_name_GMM-covariance_type_full-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False.csv-middle_results.dat'
                params = {'file_name': dataset_name,
                          'detector': 'detector_name_GMM-covariance_type_full-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False',
                          'n_components': 5,
                          'q': 0.2,
                          'd': 10,
                          'n': 100
                          }
            elif 'DS50_MAWI_WIDE/DS52-srcIP_203.78.7.165' in dataset_name:
                in_file = f'out/data_kjl/{dataset_name}/iat_size/header:False/' \
                          'detector_name_GMM-covariance_type_full-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False.csv-middle_results.dat'
                params = {'file_name': dataset_name,
                          'detector': 'detector_name_GMM-covariance_type_full-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False',
                          'n_components': 45,
                          'q': 0.9,
                          'd': 10,
                          'n': 100
                          }


            elif 'ISTS/2015' == dataset_name:
                in_file = f'out/data_kjl/{dataset_name}/iat_size/header:False/' \
                          'detector_name_GMM-covariance_type_full-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False.csv-middle_results.dat'
                params = {'file_name': dataset_name,
                          'detector': 'detector_name_GMM-covariance_type_full-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False',
                          'n_components': 45,
                          'q': 0.2,
                          'd': 10,
                          'n': 100
                          }

            elif 'MACCDC/2012' == dataset_name:
                in_file = f'out/data_kjl/{dataset_name}/iat_size/header:False/' \
                          'detector_name_GMM-covariance_type_full-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False.csv-middle_results.dat'
                params = {'file_name': dataset_name,
                          'detector': 'detector_name_GMM-covariance_type_full-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False',
                          'n_components': 35,
                          'q': 0.4,
                          'd': 10,
                          'n': 100
                          }

            elif 'DS60_UChi_IoT/DS62-srcIP_192.168.143.42' == dataset_name:
                in_file = f'out/data_kjl/{dataset_name}/iat_size/header:False/' \
                          'detector_name_GMM-covariance_type_full-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False.csv-middle_results.dat'
                params = {'file_name': dataset_name,
                          'detector': 'detector_name_GMM-covariance_type_full-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False',
                          'n_components': 40,
                          'q': 0.7,
                          'd': 10,
                          'n': 100
                          }

            in_file = 'out/data_kjl/all_results-kjl.dat'
            results = load_data(in_file)
            # get middle results
            results = results[(f'data/data_kjl/{dataset_name}/iat_size/header:False',
                               'detector_name_GMM-covariance_type_full-gs_True-kjl_True-quickshift_False-meanshift_False-nystrom_False')][
                1]
            # pprint(results)
            kjl_n_aucs, kjl_d_aucs, kjl_q_aucs, n_components_aucs = get_each(results, params)
            title = data_mapping[params['file_name']]
            y = [np.mean(v) for v in list(kjl_n_aucs.values())]
            y_err = [np.std(v) for v in list(kjl_n_aucs.values())]
            print(f'{dataset_name}, n (varies): {y_err}')
            plot_err_bar(x=list(kjl_n_aucs.keys()), y=y, y_err=y_err, xlabel='n',
                         ylabel='auc',
                         title=title + '\n(d={}, q={} (of kjl) and n_components={} (of GMM))'.format(params['d'],
                                                                                                     params['q'],
                                                                                                     params[
                                                                                                         'n_components']))

            y = [np.mean(v) for v in list(kjl_d_aucs.values())]
            y_err = [np.std(v) for v in list(kjl_d_aucs.values())]
            print(f'{dataset_name}, d (varies): {y_err}')
            plot_err_bar(x=list(kjl_d_aucs.keys()), y=y, y_err=y_err, xlabel='d',
                         ylabel='auc',
                         title=title + '\n(n={}, q={} (of kjl) and n_components={} (of GMM))'.format(params['n'],
                                                                                                     params['q'],
                                                                                                     params[
                                                                                                         'n_components']))