码迷,mamicode.com
首页 > 编程语言 > 详细

使用KFold进行训练集和验证集的拆分,使用准确率和召回率来挑选合适的阈值(threshold) 1.KFold(进行交叉验证) 2.np.logical_and(两bool数组都是正即为正) 3.np.logical_not(bool、)

时间:2019-08-14 17:15:43      阅读:598      评论:0      收藏:0      [点我收藏+]

标签:from   拆分   nbsp   gic   最好   not   test   ica   span   

1. k_fold = KFold(n_split, shuffle) 构造KFold的索引切割器

k_fold.split(indices) 对索引进行切割。

参数说明:n_split表示切割的份数,假设切割的份数为10,那么有9份是训练集有1份是测试集,shuffle是否进行清洗,indices表示需要进行切割的索引值

import numpy as np
from sklearn.model_selection import KFold

indices = np.arange(20)
k_fold = KFold(n_splits=10, shuffle=False)
train_test_set = k_fold.split(indices)
for (train_set, test_set) in train_test_set:
    print(train_set)
    print(test_set)

2.np.logical_and(pred_issame, test_issame) # 如果pred_issame中的元素和test_issame都是True, 返回的也是True,否者返回的是False

参数说明:pred_issame输入的bool数组,test_issame输入的bool数组

import numpy as np
pred_issame = np.array([True, True, False, False])
actual_issame = np.array([False, True, False, False])
print(np.logical_and(pred_issame, actual_issame))
# [False  True False False]

3. np.logical_not(pred_issame)  # 将输入的True转换为False,False转换为Train 

参数说明: pred_issame 表示输入的bool数组

import numpy as np
pred_issame = np.array([True, True, False, False])
print(np.logical_not(pred_issame))
# [False False  True  True]

第一步:构造indices的索引值,使用KFold对incides进行train_set和test_set的生成

第二步: 使用np.arange(0, 4, 0.4)  构造threshold的列表,循环threshold列表

第三步:

        第一步: 使用np.less(dist, threshold) 来获得预测结果

        第二步:

                tp = np.logical_and(pred_issame, actual_issame)  # 正样本被判定为正样本

                fp = np.logical_and(pre_issame, np.logical_not(actual_issame)) # 负样本被判断为正样本

                tn = np.logical_and(np.logical_not(pre_issame), np.logical_not(actual_issame)) # 负样本判断为负样本

                fn = np.logical_and(np.logical_not(pre_issame), actual_issame) # 正样本被判断为负样本

                tpr = 0 if tp + fn == 0 else float(tp) / float(tp + fn)  # 召回率

                fpr = 0 if fp + tn == 0 else float(tn) / float(fp + tn)

                accur = (tp + tn) / (tp+fp+fn+tn)

第四步:使用threshold_max = np.argmax(accur) # 获得准确率最大的索引值,即为thresholds最好的索引值 

 

  

 

使用KFold进行训练集和验证集的拆分,使用准确率和召回率来挑选合适的阈值(threshold) 1.KFold(进行交叉验证) 2.np.logical_and(两bool数组都是正即为正) 3.np.logical_not(bool、)

标签:from   拆分   nbsp   gic   最好   not   test   ica   span   

原文地址:https://www.cnblogs.com/my-love-is-python/p/11352566.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!