好吧,這聽起來會讓人感到困惑,但我會盡我所能讓它足夠清晰。我有一個完整的數據集fulldata
,這個數據集是494021x6
。匹配數據示例matlab
我使用就可以SVDS(奇異值分解)像這樣:
%% dimensionality reduction
columns = 6
[U,S,V]=svds(fulldata,columns);
我然後隨機從fulldata
選擇1000行:
%% randomly select dataset
rows = 1000;
columns = 6;
%# pick random rows
indX = randperm(size(fulldata,1));
indX = indX(1:rows)';
%# pick columns in a set order (2,4,5,3,6,1)
indY = indY(1:columns);
%# filter data
data = U(indX,indY);
我然後應用規範化該隨機選擇的1000行:
% apply normalization method to every cell
maxData = max(max(data));
minData = min(min(data));
data = ((data-minData)./(maxData));
然後我輸出從原始數據採樣伊納勒fulldata
一套1000個選擇的行相匹配:
% output matching data
dataSample = fulldata(indX, :)
還要注意的是,當我拿起「隨機行」我也輸出在fulldata匹配行該INDX行。
所以datasample
看起來是這樣的:
這是與原始fulldata其中1000個隨機行。
而且indX
看起來是這樣的:
這是從fulldata
相應的行號。
問題IM到達時我用K均值聚類的1000個隨機行,我輸出的每個集羣的,像這樣的數據:
%% generate sample data
K = 6;
numObservarations = size(data, 1);
dimensions = 3;
%% cluster
opts = statset('MaxIter', 100, 'Display', 'iter');
[clustIDX, clusters, interClustSum, Dist] = kmeans(data, K, 'options',opts, ...
'distance','sqEuclidean', 'EmptyAction','singleton', 'replicates',3);
%% plot data+clusters
figure, hold on
scatter3(data(:,1),data(:,2),data(:,3), 5, clustIDX, 'filled')
scatter3(clusters(:,1),clusters(:,2),clusters(:,3), 100, (1:K)', 'filled')
hold off, xlabel('x'), ylabel('y'), zlabel('z')
grid on
view([90 0]);
%% plot clusters quality
figure
[silh,h] = silhouette(data, clustIDX);
avrgScore = mean(silh);
% output the contents of each cluster
K1 = data(clustIDX==1,:)
K2 = data(clustIDX==2,:)
K3 = data(clustIDX==3,:)
K4 = data(clustIDX==4,:)
K5 = data(clustIDX==5,:)
K6 = data(clustIDX==6,:)
我怎麼能匹配K1,K2 ... K6到相應的indX行號?例如K1的輸出是這樣的:
我希望有額外的文件,如K1-indX
這僅僅是一個從indX
從K1,K2 ...等匹配集羣數據對應的行號的列表,或者可能追加INDX行數爲K1,在塔K2輸出7(最好)
例如:
K1 cluster data | Belongs to fulldata row number
0.4 0.5 0.6 0.4 | 456456 etc
今後一項建議:發帖提問時,嘗試將代碼減少到只有相關的部分。鏈接到您以前的問題,如果你認爲它會給出額外的上下文。拿出簡單的例子(MWE),其他人可以測試以重現問題......例如,刪除上面代碼中的所有繪圖,因爲它與此處的問題無關。你也可以不用提到SVD分解和規範化(通過隨機選擇行來簡單陳述'data'是'fulldata'的一個子集)。我向你保證,你會得到更多的答案:) – Amro 2012-07-16 11:56:28