将数据分成训练集和测试集:
- 传统处理方法,利用ranperm生成随机的编号,取前面百分比的数据作为训练集,余下的作为测试集。
代码如下:
num_points = size(X,2);
split_point = round(num_points*0.7);
seq = randperm(num_points);
X_train = X(:,seq(1:split_point));
Y_train = Y(seq(1:split_point));
X_test = X(:,seq(split_point+1:end));
Y_test = Y(seq(split_point+1:end));
- 利用Matlab自带函数cvpartition( cross-validation partition)
优点: - 可以按照需求生成分层抽样,还是非分层抽样,这样可以得到更准确的预测。
- 可以生成单次数据集,还是多次数据集。即k-fold test,这对于算法的准确性评估是非常重要的。
生成单次测试数据:
c = cvpartition(n,'HoldOut',p) % P:测试集占比
生成k-fold测试集
c = cvpartition(n,'KFold',k)
关于测试集和训练集的概念,此篇博文讲的很清楚:
https://blog.csdn.net/TOMOCAT/article/details/81589617