You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算含类别列的.txt文件中各类别的均值向量?

解决类别均值向量计算的问题

嘿,你完全说对了——不能直接用mean(MyImage),因为你的数据里混了分类标识(类别、真实标签)和需要计算均值的特征(X、Y、像素强度),直接全局求均值会把无关的标识列也算进去,结果根本不是你想要的每个类别的特征均值向量。

下面是具体的实现步骤和MATLAB代码,帮你分别计算类别0和类别1的均值向量:

步骤说明

  1. 先把txt文件里的数据读取成结构化的数值矩阵
  2. 按第一列(类别列)把数据分成两组:类别0的样本、类别1的样本
  3. 对每组样本,只提取需要计算均值的特征列(X、Y、像素强度,也就是第3、4、5列)
  4. 分别计算每组特征列的均值,得到对应类别的均值向量

代码实现

% 打开并读取基础.txt文件
testFile = fopen('基础.txt', 'r');
% 按5列格式读取所有数值,转置后变成每行对应一个样本的矩阵
data = fscanf(testFile, '%f', [5, inf]);
data = data';
fclose(testFile);

% 按类别筛选数据
class0_samples = data(data(:, 1) == 0, :); % 提取所有类别为0的样本
class1_samples = data(data(:, 1) == 1, :); % 提取所有类别为1的样本

% 计算类别0的均值向量(仅针对X、Y、像素强度列)
mean_vec_class0 = mean(class0_samples(:, 3:5));
% 计算类别1的均值向量
mean_vec_class1 = mean(class1_samples(:, 3:5));

% 可选:如果需要把真实标签列也纳入均值计算(不过标签一般是离散值,均值意义不大)
% mean_vec_class0 = mean(class0_samples(:, 2:5));
% mean_vec_class1 = mean(class1_samples(:, 2:5));

额外说明

  • 代码里用data(:, 1) == 0这种逻辑索引,能快速筛选出对应类别的所有样本,比循环高效很多
  • 如果你的真实标签列是用来验证分类结果的,一般不需要把它纳入均值计算,所以我们只取了第3到5列的特征来求均值
  • 运行后mean_vec_class0和mean_vec_class1就是你要的两个类别各自的均值向量,每个向量包含X、Y、像素强度三个特征的均值

内容的提问来源于stack exchange,提问作者JetsYanks08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:45:32