以UCI红酒数据集为例:数据记录的是在意大利某一地区同一区域上三种不同品种的酒的化学成分分析,数据里含有178个样本属于三个类别(类别标签已给),每个样本含有13个特征分量。
%导入数据集
clear;
clc;
load wine_SVM; %数据集为wine,数据集标签为wine_labels
Data = wine; %对数据集实例化
num_test = 78; %设置测试集样本数为78,训练集样本为100
[ndata, D] = size(Data); %ndata表示数据集样本数,D是特征数
R = randperm(ndata); %1到ndata这些数随机打乱得到的一个随机数字序列作为索引
Xtest = Data(R(1:num_test),:); %以索引的前78个数据点作为测试样本Xtest
test_wine_labels = wine_labels(R(1:num_test),:); % 设置测试集样本标签
test_wine_labels = double( test_wine_labels );
R(1:num_test) = [];
Xtrain = Data(R,:); %剩下的100个样本数据作为训练样本Xtrain
num_train = size(Xtrain,1); %num_train:训练样本数
train_wine_labels = wine_labels(R,:); % 设置训练集样本标签
train_wine_labels = double( train_wine_labels );
算法运行结果可得,随机划分178个样本数据集,78个为测试集Xtest,100个为训练集Xtrain;测试集标签为test_wine_labels,训练集标签为train_wine_labels。
唯一的问题是暂时还不知道如何固定随机数种子,使得每次划分的训练集和测试集相同,这样可以用来方便调整其它参数。如果有哪位大佬看见这篇文章,知道怎么做的话,麻烦可以留言或者私信我,万分感谢!!!