时序数据集K-Means聚类前子采样、PCA处理MATLAB步骤咨询
时序数据子采样与MATLAB PCA+K-Means全流程操作
一、20名受试者数据集的合理子采样方案
采样核心原则:不破坏原始数据的受试者分布、活动类别分布,不引入冗余的时序自相关偏差,总采样量控制在10万~20万行即可,完全满足后续MATLAB运算效率要求。
具体操作步骤:
- 先按
受试者ID+活动标签做分层分组,统计每个分组的原始行数,提前算好每个分组需要抽取的样本量,保证采样后各分组样本占比和原始数据集偏差不超过5%,避免短时长活动、样本量少的受试者被漏采。 - 根据数据类型选采样方式:
- 如果70维是已经提取好的窗口级特征(比如时域统计量、频域特征):直接在每个分组内做等间隔抽样即可,比如总采样率设为10%就每10行取1行,不要全局随机抽点,避免抽到连续高度相关的冗余样本。
- 如果70维是原始传感器逐点采样值:用无重叠滑动窗口采样,窗口长度匹配单步活动的时长(比如50Hz采样率下设12s窗口,即50100个点),取每个窗口的特征值作为一个样本,不要抽单点——单点时序值没有活动语义,采了也没用。
- 采样后做校验:统计采样后20名受试者的样本占比、各活动类的样本占比,和原始分布做对比,同时确认没有出现某类活动、某个受试者样本量为0的情况。
避坑提醒:不要直接对全量100万行做全局随机采样,这种方式极容易漏采短时长的过渡活动样本,还会因为时序数据的强自相关性采到大量冗余相邻点,有效信息量极低。
二、MATLAB环境下PCA+K-Means完整操作步骤
2.1 数据预处理
首先把采样后的数据导入MATLAB,拆分特征列与标识列,做标准化:
% 按实际数据结构调整列索引:假设第1列为受试者ID,第2列为真实活动标签,第3到70列为特征 data_sampled = readmatrix('sampled_data.csv'); % 替换成你的数据导入方式 sub_id = data_sampled(:,1); true_label = data_sampled(:,2); X = data_sampled(:,3:70); % PCA对量纲敏感,必须做Z-score标准化 X = zscore(X);
2.2 PCA降维
直接调用MATLAB内置pca函数,数值稳定性比自己实现的版本好很多:
% 执行PCA计算 [coeff, score, latent, ~, explained] = pca(X); % 计算累计方差贡献率,选累计贡献90%~95%对应的主成分维度即可 cum_var = cumsum(explained); k = find(cum_var >= 95, 1, 'first'); fprintf('保留%d个主成分,累计方差贡献率为%.2f%%\n',k,cum_var(k)); % 提取降维后的数据集用于后续聚类 X_pca = score(:, 1:k);
避坑提醒:不要把受试者ID、活动标签这类非特征列放进PCA输入矩阵,不然会严重干扰降维结果。
2.3 K-Means聚类
先确定最优聚类数,再跑正式聚类:
- 无真实标签时用肘部法则确定K值:
% 遍历K值从2到15,计算每个K对应的簇内平方和 max_test_k = 15; sse = zeros(max_test_k,1); for i = 1:max_test_k [~,~,sumd] = kmeans(X_pca, i, 'Distance','sqeuclidean','Replicates',5); sse(i) = sum(sumd); end % 绘制肘部图,选SSE下降趋势突然变缓的拐点作为最终K值 plot(1:max_test_k, sse, 'o-','LineWidth',1.5); xlabel('聚类数K'); ylabel('簇内平方和SSE');
- 确定K值后跑正式聚类,多跑几次重复避免局部最优:
% 替换成你确定的K值,Replicates设为5~10次即可 K = 6; [cluster_idx, cluster_center, ~, ~] = kmeans(X_pca, K, ... 'Distance','sqeuclidean',... 'Replicates',10,... 'MaxIter',1000); % cluster_idx就是每个样本对应的聚类标签
2.4 结果合理性校验
- 受试者维度校验:统计每个聚类中20名受试者的样本占比,如果某个聚类90%以上样本都来自同一个受试者,说明采样或降维有问题,把个体差异当成了活动特征,需要重新调整采样策略。
- 标签维度校验:如果有真实活动标签,可以计算调整兰德指数、调整互信息,看聚类结果和真实活动类别的匹配度。
内容的提问来源于stack exchange,提问作者Krishna
相关产品推荐
相关产品推荐

