日常总结---谱聚类

标签: 工作


谱聚类

探索一:

输入数据:货架信息(包括货架信息及货位上的SKU信息)
数据处理:

  1. 剔除空货架。
  2. 剔除SKU数小于5的货架。
  3. 剔除分布货架小于2的SKU。
  4. 构建BIN(货架)-SKU二分网络的邻接矩阵。
    数据处理代码如下:
clc;
clear all;
load bin.mat
%处理空货架,及含SKU个数小于5的货架
binsku=bin.skuID;%确保源数据不变
emptyBin=find(sum(abs(bin.binState),2)<=5);
emptyBin=flipud(emptyBin);%倒序排列(防止因顺序出错)
for i=1:size(emptyBin,1)
    binsku(emptyBin(i,1),:)=[];
end
skuList=cell(1,15000);%所有不重复的SKU的列表
index=1;
for i=1:size(binsku,1)
    for j=1:size(binsku,2)
        if ~isempty(binsku{i,j})
            if isempty(find(strcmp(skuList,binsku{i,j})==1))
                skuList{1,index}=binsku{i,j};
                index=index+1;
            end
        end
    end
end
a=0;%a为SKU的个数统计
for i=1:size(skuList,2)
            if ~isempty(skuList{1,i})
                 a=a+1;
            end
end
skuList= skuList(1,1:a);
%构建BIN-SKU的邻接矩阵
adja=zeros(size(binsku,1),a);
for i=1:size(adja,1)
    for j=1:size(binsku,2)
        if ~isempty(binsku{i,j})
            ind=find(strcmp(skuList,binsku{i,j})==1);%定位该SKU对应的索引
            adja(i,ind)=1;
        end
     end
end
%处理货架分布低于2的SKU,并删除
skubin=adja';
delsku=find(sum(skubin,2)<=2);
delsku=flipud(delsku);
for i=1:size(delsku,1)
    skubin(delsku(i,1),:)=[];
    adja(:,delsku(i,1))=[];
end
bb=zeros(size(adja,1),size(adja,1));
ss=zeros(size(adja,2),size(adja,2));
x=cat(2,bb,adja);
y=cat(2,adja',ss);
w=cat(1,x,y);
save('w.mat','w');```


谱聚类代码如下: 

function [C,V] = SpectralClustering(W, k)
W=W-diag(diag(W));%将对角线设为0
D = diag(sum(W'));%度矩阵
E=D-W;%拉普拉斯矩阵
E = D(-1/2)*E*D(-1/2);%对拉普拉斯矩阵归一化
[Q,V]=eig(E);%eig函数:求E矩阵的特征值及特征向量,Q为特征向量矩阵,V为特征值矩阵
%[Q, V] = eigs(E, k); %选的是前K个最大特征值对应的特征向量
C = kmeans(Q, k);%使用K-MEANS聚类
end

调试得到特征值分布图如下:
```matlab
cc=C(1:size(adja,1),:);%取货架对应的行
disp('tabulate(cc)');
tabulate(cc);%统计cc矩阵的值的分布
tz=diag(V);%取特征值矩阵对角上的元素
bar(tz);%画出特征值直方图

特征值直方图如下:

日常总结---谱聚类_第1张图片
image.png

聚类统计如下:

K>> tabulate(C)
  Value    Count   Percent
      1      603     20.74%
      2      447     15.38%
      3      893     30.72%
      4       63      2.17%
      5      901     30.99%

你可能感兴趣的:(日常总结---谱聚类)