2301_81273173 2023-12-04 22:20 采纳率: 0%
浏览 4
已结题

matlab进行knn分类并画图(QAQ,期末考试)

长近邻分类
要求:对数据INIST1ooo0 2D进行KNN分类,K值分别取1、3、5,7,训练样本由每类的一定比例(1%,2%,5%,10%,20%)组成,其余为测试样本,计算10次分类精度的平均值和标准差,并分别画出不同K取值下平均分类精度(包括标准差)与训练样本比例的变化图,会用到histcounts、nique、round、find、 randperm、 fitcknn、 predict、 length、 mean、td、errorbar、xl abel、set以及tight_subplot等函数。
效果图如下

img

  • 写回答

2条回答 默认 最新

  • Guff_hys 2023-12-05 08:31
    关注
    
    % 假设您已经加载了数据集并将其存储在变量INIST10000中
    % INIST10000应该是一个包含训练样本和测试样本的矩阵
    
    % 设置K值和训练样本比例
    K_values = [1, 3, 5, 7];
    train_percentages = [0.01, 0.02, 0.05, 0.1, 0.2];
    
    % 初始化结果存储变量
    avg_accuracies = zeros(length(K_values), length(train_percentages));
    std_accuracies = zeros(length(K_values), length(train_percentages));
    
    % 执行10次分类
    num_iterations = 10;
    for iter = 1:num_iterations
        for k_idx = 1:length(K_values)
            K = K_values(k_idx);
            for p_idx = 1:length(train_percentages)
                train_percentage = train_percentages(p_idx);
    
                % 从每个类别中随机选择训练样本和测试样本
                % 这里需要使用histcounts、unique、round、find、randperm等函数
    
                % 使用fitcknn训练KNN模型
                % 这里需要使用fitcknn函数
    
                % 使用predict函数进行预测
    
                % 计算分类精度
                % 这里需要使用length、mean、std等函数
    
                % 将结果存储到avg_accuracies和std_accuracies中
            end
        end
    end
    
    % 计算平均值和标准差
    avg_avg_accuracies = mean(avg_accuracies, 1);
    std_avg_accuracies = std(avg_accuracies, 1);
    
    % 绘制平均分类精度和标准差的变化图
    figure;
    % 使用tight_subplot创建子图
    % 这里需要使用tight_subplot、errorbar、xlabel、set等函数
    
    

    若对你有用还请采纳

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月12日
  • 创建了问题 12月4日