以下是一个简单的k折交叉验证的MATLAB代码示例:

% 假设我们有一个包含特征数据X和标签数据y的数据集

% 设置k值(k折交叉验证的折数)
k = 5;

% 计算每一折的数据集大小
foldSize = floor(size(X, 1) / k);

% 随机打乱数据集
idx = randperm(size(X, 1));
X = X(idx, :);
y = y(idx);

% 初始化存储每一折的准确率的变量
accuracies = zeros(k, 1);

% 开始k折交叉验证
for fold = 1:k
    % 确定当前折的训练集和测试集的索引
    testIdx = (fold-1)*foldSize+1 : fold*foldSize;
    trainIdx = setdiff(1:size(X, 1), testIdx);
    
    % 根据索引划分训练集和测试集
    X_train = X(trainIdx, :);
    y_train = y(trainIdx);
    X_test = X(testIdx, :);
    y_test = y(testIdx);
    
    % 在训练集上训练模型
    model = trainModel(X_train, y_train);
    
    % 在测试集上进行预测
    predictions = predictModel(model, X_test);
    
    % 计算准确率
    accuracy = sum(predictions == y_test) / numel(y_test);
    
    % 存储准确率
    accuracies(fold) = accuracy;
end

% 输出平均准确率
meanAccuracy = mean(accuracies);
fprintf('平均准确率: %.2f\n', meanAccuracy);

请注意,上述代码中的 trainModelpredictModel 是需要根据具体问题自行编写的训练和预测函数


原文地址: https://www.cveoy.top/t/topic/hZZU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录