-
Notifications
You must be signed in to change notification settings - Fork 3
/
makeTransferDataF.m
66 lines (54 loc) · 1.46 KB
/
makeTransferDataF.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function [dataConf] = makeTransferDataF(DataParameters)
nInstances=DataParameters.nInstances;
nAttrs=DataParameters.nAttrs;
nTasks=DataParameters.nTasks;
nAtoms=DataParameters.nAtoms;
% nInstances=1000; %1000
% nAttrs=50;
% nAtoms=10;
% nTasks=50;
propAtom=2/nAtoms;
propTrainingSet=0.1;
noise=0.1;
X=unitalizeColumns(randn(nAttrs,nInstances));
D=unitalizeColumns( randn(nAttrs,nAtoms) );
W=zeros(nAttrs, nTasks);
for i=1:nTasks
for j=1:nAtoms % OJETE with this
if rand<propAtom
W(:,i)=W(:,i)+D(:,j)+randn*D(:,j);
end
end
% W(:,i)=W(:,i)/sum(abs(W(:,i))); % All weight vectors have L1 norm = 1
end
Y=W'*X;
Y=Y+randn(size(Y))*noise;
nTrainingInstances=floor(nInstances*propTrainingSet);
trainX=X(:,1:nTrainingInstances);
testX=X(:,nTrainingInstances:end);
trainY=Y(:,1:nTrainingInstances);
testY=Y(:,nTrainingInstances:end);
transferYCell=cell(1,nTasks-1);
transferXCell=cell(1,nTasks-1);
transferX=[];
transferY=[];
for i=1:nTasks-1
transferYCell{i}=trainY(i,:)';
transferXCell{i}=trainX;
% transferX=[transferX, trainX];
% transferY=[transferY, trainY(i,:)];
end
trainY=trainY(end,:)';
% ridgeX=[transferX, trainX];
% ridgeY=[transferY, trainY];
transferW=W(:,1:end-1);
targetW=W(:,end);
dataConf.transferXCell=transferXCell;
dataConf.transferYCell=transferYCell;
dataConf.trainX=trainX;
dataConf.trainY=trainY;
dataConf.testX=testX;
dataConf.testY=testY;
dataConf.transferW=transferW;
dataConf.targetW=targetW;
end