网站怎么被黑,北京网络营销招聘,常宁市网站建设,seo怎样才能优化网站1 引言
在使用机器学习训练模型算法的过程中#xff0c;为提高模型的泛化能力、防止过拟合等目的#xff0c;需要将整体数据划分为训练集和测试集两部分#xff0c;训练集用于模型训练#xff0c;测试集用于模型的验证。此时#xff0c;使用train_test_split函数可便捷高…1 引言
在使用机器学习训练模型算法的过程中为提高模型的泛化能力、防止过拟合等目的需要将整体数据划分为训练集和测试集两部分训练集用于模型训练测试集用于模型的验证。此时使用train_test_split函数可便捷高效的实现数据训练集与测试集的划分。
2 train_test_split介绍
train_test_split函数来自scikit-learn库也称为sklearn安装命令
pip install sklearn
函数的导入
from sklearn.model_selection import train_test_split
1.1 函数定义
def train_test_split(*arrays,test_sizeNone,train_sizeNone,random_stateNone,shuffleTrue,stratifyNone,):
1.2 参数说明 *arrays: 单个数组或元组表示需要划分的数据集。如果传入多个数组则必须保证每个数组的第一维大小相同。test_size: 测试集的大小占总数据集的比例值为0.0-1.0表示测试集占总样本比例。默认值为0.25即将传入数据的25%作为测试集。train_size: 训练集的大小占总数据集的比例值为0.0-1.0表示训练集占总样本比例。默认值为None此时和test_size互补即训练集的大小为(1-test_size)。random_state: 随机数种子。可以设置一个整数用于复现结果。默认为None。其实是该组随机数的编号在需要重复试验的时候保证得到一组一样的随机数。比如每次都填1其他参数一样的情况下你得到的随机数组是一样的。但填0或不填每次都会不一样。shuffle: 是否随机打乱数据。默认为True。stratify: 可选参数用于进行分层抽样。传入标签数组保证划分后的训练集和测试集中各类别样本比例与原始数据集相同。默认为None即普通的随机划分。此参数作用是保持测试集与整个数据集里的数据分类比例一致比如有1000个数据800个属于A类200个属于B类。设置stratify y_labletest_size0.25split之后数据组成如下training: 750个数据其中600个属于A类150个属于B类testing: 250个数据其中200个属于A类50个属于B类 1.3 返回值 该函数返回一个元组(X_train, X_test, y_train, y_test)其中X_train表示训练集的特征数据X_test表示测试集的特征数据y_train表示训练集的标签数据y_test表示测试集的标签数据。 1.4 注意事项 test_size和train_size必须至少有一个设置为非None。当传入多个数组时请确保每个数组的第一维大小相同。random_state要设置一个整数值从而保证每次获取相同的训练集和测试集当使用分层抽样时请确保传入的标签数组是正确的。 3 train_test_split使用
3.1 使用train_test_split分割Iris数据
from sklearn import datasets
from sklearn.model_selection import train_test_split# 加载Iris数据集
iris datasets.load_iris()
X iris.data
y iris.targetX_train, X_test, y_train, y_test train_test_split(X, y, test_size0.25, random_state1)
print(X_train)
print(X_test)
结果展示
X_train[[6.5 2.8 4.6 1.5][6.7 2.5 5.8 1.8][6.8 3. 5.5 2.1][5.1 3.5 1.4 0.3][6. 2.2 5. 1.5]......此处数据省略[4.9 3.6 1.4 0.1]]
X_test[[5.8 4. 1.2 0.2][5.1 2.5 3. 1.1][6.6 3. 4.4 1.4][5.4 3.9 1.3 0.4][7.9 3.8 6.4 2. ]......此处数据省略[5.2 3.4 1.4 0.2]]
3.2 使用train_test_split分割水果识别数据
在/opt/dataset下存放着水果图片的分类数据文件夹文件夹名称为标签每个文件夹下存储着多张对应标签的水果图片如下所示 以apple文件夹为例图片内容如下 数据加载和分割数据集的代码如下
from torchvision.datasets import ImageFolder
from sklearn.model_selection import train_test_split# 图像变换
transform transforms.Compose([transforms.Resize((224, 224)),transforms.ToTensor(),transforms.Normalize(mean[0.5, 0.5, 0.5],std[0.5, 0.5, 0.5]), ])
# 加载数据集
dataset ImageFolder(/opt/dataset, transformtransform)# 划分训练集与测试集
train_dataset, valid_dataset train_test_split(dataset, test_size0.2, random_state10)batch_size 64
train_loader DataLoader(datasettrain_dataset, batch_sizebatch_size, shuffleTrue, drop_lastTrue)
test_loader DataLoader(datasetvalid_dataset, batch_sizebatch_size, shuffleTrue, drop_lastTrue)