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

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最好的索引值

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

时间: 2024-10-11 16:34:41

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

sklearn获得某个参数的不同取值在训练集和测试集上的表现的曲线刻画

from sklearn.svm import SVC from sklearn.datasets import make_classification import numpy as np X,y = make_classification() def plot_validation_curve(estimator,X,y,param_name="gamma", param_range=np.logspace(-6,-1,5),cv=5,scoring="accuracy&

sklearn——train_test_split 随机划分训练集和测试集

sklearn--train_test_split 随机划分训练集和测试集 sklearn.model_selection.train_test_split随机划分训练集和测试集 官网文档:http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html 一般形式: train_test_split是交叉验证中常用的函数,功能是从样本中随机的按比例选取train data和

AI - MLCC06 - 训练集和测试集 (Training and Test Sets)

原文链接:https://developers.google.com/machine-learning/crash-course/training-and-test-sets 1- 拆分数据 可将单个数据集拆分为一个训练集和一个测试集. 训练集 - 用于训练模型的子集. 测试集 - 用于测试训练后模型的子集. 训练集的规模越大,模型的学习效果越好.测试集规模越大,对于评估指标的信心越充足,置信区间就越窄.在创建一个能够很好地泛化到新数据模型的过程中,测试集充当了新数据的代理. 拆分数据的一些注意

将数据划分为训练集和测试集;缩放特征区间

导入葡萄酒数据: 1 import numpy as np 2 import pandas as pd 3 4 df_wine = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data", header=None) 5 df_wine.columns = ["class label", "alcohol", 6 "mal

随机切分csv训练集和测试集

使用numpy切分训练集和测试集 觉得有用的话,欢迎一起讨论相互学习~Follow Me 序言 在机器学习的任务中,时常需要将一个完整的数据集切分为训练集和测试集.此处我们使用numpy完成这个任务. iris数据集中有150条数据,我们将120条数据整合为训练集,将30条数据整合为测试集. iris.csv下载 程序 import csv import os import numpy as np '''将iris.csv中的数据分成train_iris和test_iris两个csv文件,其中t

如何把数据集划分成训练集和测试集

本文内容来自周志阳<机器学习> 问题: 对于一个只包含\(m\)个样例的数据集\(D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\),如何适当处理,从\(D\)中产生训练集\(S\)和测试集\(T\)? 下面介绍三种常见的做法: 留出法 交叉验证法 自助法 留出法(hold-out) 留出法直接将数据集\(D\)划分为两个互斥的集合,其中一个集合作为训练集\(S\),留下的集合作为测试集\(T\),即\(D=S \cup T, S \cap T=\emptys

Python数据预处理—训练集和测试集数据划分

使用sklearn中的函数可以很方便的将数据划分为trainset 和 testset 该函数为sklearn.cross_validation.train_test_split,用法如下: >>> import numpy as np >>> from sklearn.cross_validation import train_test_split >>> X, y = np.arange(10).reshape((5, 2)), range(5)

python 将数据随机分为训练集和测试集

# -*- coding: utf-8 -*- """ Created on Tue Jun 23 15:24:19 2015 @author: hd """ from sklearn import cross_validation c = [] j=0 filename = r'C:\Users\hd\Desktop\bookmarks\bookmarks.arff' out_train = open(r'C:\Users\hd\Desktop

用于拆分训练集和测试集的函数 train_test_split

文档地址:https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html#sklearn.model_selection.train_test_split 原文地址:https://www.cnblogs.com/s1m00n/p/11565913.html